LeetCode 151. 翻转字符串里的单词
原题链接
中等
作者:
松鼠爱葡萄
,
2020-07-30 09:57:42
,
所有人可见
,
阅读 822
class Solution {
public:
string reverseWords(string s) {
int k=0;
// __ab_cde___fgh___ => ba_edc_hgf__
//遍历每一个字符
for(int i=0;i<s.size();)
{
//j指向上一个字符尾巴
int j=i;
//去除多余空格
while(j<s.size() && s[j]==' ') j++;
if(j==s.size()) break;
//找到这个单词的开头
i=j;
//找到这个单词的尾巴
while(j<s.size() && s[j]!=' ') j++;
//翻转这个单词
reverse(s.begin() +i, s.begin() + j);
//给每个单词末尾添加一个空格
if(k) s[k++]=' ';
while(i<j) s[k++]=s[i++];
}
//ba_edc_hgf__ => ba_edc_hgf
//去除尾巴处多余空格
s.erase(s.begin()+k , s.end());
// ba_edc_hgf => fgh_cde_ab
reverse(s.begin(), s.end());
return s;
}
};