LeetCode 151. 颠倒字符串中的单词
class Solution {
public:
    string reverseWords(string s) {
        //操作分解
        //1. 反转字符串
        //2. 反转单词中字符串
        //两步交换也行
        reverse(s.begin(), s.end());
        int k = 0; //记录改变后字符串
        for (int i = 0; i < s.size(); i ++) {
            if (s[i] == ' ') continue;
            int j = i, t = k;
            while (j < s.size() && s[j] != ' ') s[t ++] = s[j ++]; //记录到字符串前面
            reverse(s.begin() + k, s.begin() + t);
            s[t ++] = ' '; //翻转完后补空格
            k = t, i = j;
        }      
      
        s.erase(s.begin() + k - 1, s.end()); //之前每个单词都补了一个空格所以最后需要删除一个空格
        return s;
    }
};
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号