题解
- 题目没让对空格进行额外处理,只是反转内容。
- 但是很多题解却处理了额外的空格,应该是不对的。
- 如果不要多余空格,可以使用 s t r i n g s t r e a m stringstream stringstream 类
AC-Code
class Solution {
public:
string ReverseSentence(string str) { // 只反转,保留原空格位置、数量。
if(str.empty()) return str;
reverse(str.begin(), str.end());
int i = 0;
while(i < str.length()) {
int j = i;
while(j < str.length() && str[j] != ' ')
++j;
int len = j - i;
for(int k = 0; k < len / 2; ++k)
swap(str[i + k], str[i + len - k - 1]);
i = j + 1;
}
return str;
}
/*
* 因为样例有 " " -> " "。所以按照题意,不应该对空格进行额外处理
*/
};