各行の単語を逆にする必要がある単純な文字列操作の問題があります: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=121&page=show_problem&problem=424
そう:
I love you.
You love me.
We're a happy family.
次のようになります。
I evol .uoy
uoY evol .em
er'eW a yppah .ylimaf
今、私は次のような単純な Java ソリューションを作成しました。
BufferedReader file = new BufferedReader(new InputStreamReader(System.in));
String s;
while((s=file.readLine())!=null){
String[] sr = s.split(" ");
for(int i = 0; i<sr.length; i++)
System.out.print(new StringBuffer(sr[i]).reverse() + (i==sr.length-1?"\n":" "));
}
私は C++ を学ぼうとしているので、次のような C++ ソリューションも書いてみました。
string s;
while(getline(cin, s)){
string tmp = "";
for(int i = 0; i<=s.length(); i++)
if( i==s.length() || s[i] == ' '){
for(int j = tmp.length(); j>=0; j--)
cout << tmp[j];
if( i == s.length()) cout << endl;
else cout << " ";
tmp = "";
}else
tmp += s[i];
}
私の質問は次のとおりです。
- C++ ソリューションは「間違った答え」を返しますが、Java ソリューションは受け入れられます。なぜですか?
- C++ ソリューションに対して、どのような改善を加えることができますか?