题目

[reverse-words-in-a-string](https://leetcode.com/problems/reverse-words-in-a-string/)


算法

  • 反转单词
  • 去掉中间多余的空格,只保留一个

代码

class Solution {
public:
    void reverseWords(string &s) {
        int i = 0, j = 0, k = 0, wordCount = 0;
        while (true) {
            while (i < s.size() && s[i] == ' ') ++i;
            if (i == s.size()) break;
            if (wordCount) s[j++] = ' ';
            k = j;
            while (i < s.size() && s[i] != ' ') {
                s[j] = s[i];
                ++j; ++i;
            }
            reverseWord(s, k, j - 1);
            ++wordCount;
        }
        s.resize(j);
        reverseWord(s, 0, j - 1);
    }
    void reverseWord(string &s, int i, int j) {
        while (i < j) {
            char t = s[i];
            s[i++] = s[j];
            s[j--] = t;
        }
    }
};

results matching ""

    No results matching ""