151. 反转字符串中的单词
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
string reverseWords(string s) {
istringstream iss(s);
string temp,result;
while(iss >> temp){
result = temp + " " + result;
}
if(!result.empty()){
result.pop_back();
}
return result;
}
};

默认情况下,std::istringstream 使用空白字符(如空格、制表符、换行符)作为分隔符。

早前在做这道题的时候,回去手动操作字符串去移除多余空格,但是那样非常麻烦,且任意出错。

因此,如果后续还要移除字符串中的空格,记得使用 std::istringstream 进行操作。

 

为什么 result 后面会包含一个空格呢?

result 字符串在每次迭代中都会在前面添加一个单词和一个空格,因此在处理完所有单词后,result 的末尾会多出一个额外的空格。为了去除这个多余的空格,代码在最后使用了 result.pop_back() 来删除 result 末尾的最后一个字符,即多余的空格。