A.Java vs C++回到顶部
题意
给一个字符串,问是C形式还是Java形式,不合法输出Error
题解
有点坑,需要注意'_'在开头和某尾,Java形式不能出现'_',C形式不能出现大写,不能出现连续两个'_',复杂度O(n)
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int checkjava(string s){ 5 if('A'<=s[0]&&s[0]<='Z')return false; 6 for(int i=0;s[i];i++){ 7 if(s[i]=='_')return false; 8 } 9 return true; 10 } 11 int checkcpp(string s){ 12 if(s[0]=='_')return false; 13 for(int i=0;s[i];i++){ 14 if('A'<=s[i]&&s[i]<='Z')return false; 15 } 16 for(int i=1;s[i];i++){ 17 if(s[i]=='_'&&s[i-1]=='_')return false; 18 } 19 if(s[s.size()-1]=='_')return false; 20 return true; 21 } 22 int main(){ 23 string s; 24 while(getline(cin,s)){ 25 if(checkjava(s)){ 26 for(int i=0;s[i];i++){ 27 if('A'<=s[i]&&s[i]<='Z')cout<<"_"<<(char)(s[i]+32); 28 else cout<<s[i]; 29 } 30 }else if(checkcpp(s)){ 31 for(int i=0;s[i];i++){ 32 if(s[i]=='_')continue; 33 if(i&&s[i-1]=='_')cout<<(char)(s[i]-32); 34 else cout<<s[i]; 35 } 36 }else{ 37 cout<<"Error!"; 38 } 39 cout<<'\n'; 40 } 41 return 0; 42 }