PKU 3157 Java vs C++
http://poj.org/problem?id=3157
C++の関数名によく使われる形式と、Javaの関数名によく使われる形式とそれ以外の形式の文字列がある。
C++の形式の場合はJava形式に、Java形式の場合はC++形式に書き換えて、それ以外の場合はそれを検出せよという問題。
自分にとってはWAラッシュな感じの問題でした。
初手アクセプトしている人はいったいなんなんだといいたいです。
以下、入力に含まれていると思われるいやらしいケース。
A 最初から大文字。
__ 2連続アンダースコア。
_a_ アンダースコアが最初か最後についている。
まぁ、解けてよかったです。
main(){ string in; cin>>in; bool us=false,up=false; rep(i,in.size()){ if(isupper(in[i]))up=true; if(in[i]=='_')us=true; } if((up&&us) || isupper(in[0]) || in[0]=='_' || in[in.size()-1]=='_' || in.find("__")!=string::npos){ cout<<"Error!"<<endl; }else if(us){ rep(i,in.size()){ if(in[i]=='_')continue; if(i && in[i-1]=='_')cout<<char(toupper(in[i])); else cout<<in[i]; } cout<<endl; }else if(up){ rep(i,in.size()){ if(isupper(in[i]))cout<<'_'<<char(tolower(in[i])); else cout<<in[i]; } cout<<endl; }else cout<<in<<endl; }