class Solution {
public:
void reverseWords(string &s) {
if(s.empty()) return;
//删除字符串头尾连续的空格
while(s[s.size()-1] == ' ') s.erase(s.end()-1, s.end());
while(s[0] == ' ') s.erase(s.begin(), s.begin()+1);
//字符串中间连续的空格留下一个
for(int i = s.size()-1; i > 0;){
if(s[i] == ' ' && s[i-1] == ' ') s.erase(s.begin()+i, s.begin()+i+1);
else --i;
}
//翻转整个句子
reverse(s.begin(), s.end());
//翻转每个单词
int f = 0;
size_t i = 1;
while(i < s.size()){
if(s[i] == ' '){
reverse(s.begin()+f, s.begin()+i);
f = i+1;
}
++i;
}
reverse(s.begin()+f, s.begin()+i);
}
};LeetCode之Reverse Words in a String
最新推荐文章于 2024-10-06 15:07:26 发布
本文介绍了一种使用C++实现的字符串中单词反转的方法。该方法首先移除字符串头尾及中间多余的空格,然后整体反转字符串,最后逐一反转每个单词。通过这种方式,可以有效地处理字符串中的各种空格情况,并实现单词的正确反转。
478

被折叠的 条评论
为什么被折叠?



