反转字符串中的单词
解题思路
- 先反转每个单词
- 再反转整个字符串
class Solution {
public:
string reverseWords(string s) {
int k = 0;//每个单词的起始下标
for(int i = 0;i<s.size();i++){
if(s[i] == ' ') continue;//碰见空格直接跳过
//找出当前的单词
//将从i开始的单词挪到从位置k开始
int t = k;
int j = i;
while(j < s.size() && s[j] != ' ')s[t++] = s[j++];//
reverse(s.begin()+k,s.begin()+t);//反转单词
s[t++] = ' ';//每个单词后面加一个空格
i = j;//更新指针
k = t;//更新指针
}
if(k) k--;//删除最后多余的空格
s.erase(s.begin()+k,s.end());
reverse(s.begin(),s.end());//反转整个字符串
return s;
}
};