题意:
将java和c++中的变量名相互转换,比如:long_and_mnemonic_identifier装换为longAndMnemonicIdentifier。
思路:
直接模拟遍历替换,陷阱很多。。
代码:
//poj 3157 //sep9 #include <iostream> using namespace std; char s[256],ans[256]; void deal() { int i,j; int style1=0,style2=0; for(i=0;s[i]!='\0';++i) if(s[i]=='_') style1=1; else if('A'<=s[i]&&s[i]<='Z') style2=1; if(style1+style2==2){ printf("Error!\n"); return; } for(i=0,j=0;s[i]!='\0';) if('a'<=s[i]&&s[i]<='z') ans[j++]=s[i++]; else if(s[i]=='_'){ if(s[i+1]=='\0'||i==0||s[i+1]=='_'){ printf("Error!\n"); return ; } else{ ++i; ans[j++]=s[i++]-'a'+'A'; } }else if('A'<=s[i]&&s[i]<='Z'){ if(j==0){ printf("Error!\n"); return ; } ans[j++]='_'; ans[j++]=s[i++]-'A'+'a'; }else{ printf("Error!\n"); return ; } ans[j]='\0'; printf("%s\n",ans); } int main() { while(scanf("%s",&s)==1) deal(); return 0; }
时间: 2024-12-24 20:04:40