class Solution {
public:
string reverseWords(string s) {
int i = 0, j = s.size() - 1;
string str;
//把字符串两边的空格去除,然后把不包含空格的字符串反转
while (i < s.size() && s[i] == ' ') {
i++;
}
while (j < s.size() && s[j] == ' ') {
j--;
}
reverseCore(s, i, j);
//用k找第一个不是空格的下标,赋值给i然后k往后遍历找到空格下标,将i到k-1反转存入str然后k再查找第一个不是空格的下标,循环往下
for (int k = i; k < j + 1; k++) {
while (s[k] == ' ') {
k++;
}
i = k;
while (k <= j && s[k] != ' ') {
k++;
}
reverseCore(s, i, k - 1);
for (; i < k; i++) {
str += s[i];
}
if (i == j + 1) break;//注意最后不需要加空格。
str += ' ';
}
return str;
}
private:
void reverseCore(string &s, int left, int right) {
while (left < right) {
swap(s[left], s[right]);
left++; right--;
}
}
};
反转字符串里的单词
最新推荐文章于 2021-04-30 00:03:56 发布