有一个简单的字符串操作问题,您需要反转每行的单词: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++ 解决方案进行哪些改进(如果有)?