0%

代码随想录第二十四天

字符串-颠倒字符串中的单词

题目链接

​ 先全部反转,然后从不是空格的第一个单词字符开始计算。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
string reverseWords(string s) {
reverse(s.begin(), s.end());
int n = s.size();
int m = 0;
for (int i = 0; i < n; ++i) { //如果是i++会导致字符重复,比如“ hello world ”到这一步会变成“worldw olleh”
if (s[i] != ' ') {
if (m != 0)s[m++] = ' ';
int j = i;
while (j < n && s[j] != ' ')
s[m++] = s[j++];
reverse(s.begin() + m - (j - i), s.begin() + m);
i = j;
}

}
s.erase(s.begin() + m, s.end());//调试发现这一步非常重要
return s;
}
};