151. 反转字符串中的单词

从后向前遍历,记录每个单词的startend进行子串的裁剪即可。

class Solution {
public:
    string reverseWords(string s) {
        string ans = "";
        int start = -1, end = -1;
        for (int i = s.size() - 1; i >= 0; --i) {
            if (s[i] != ' ' && start < 0) {
                start = i;
            }
            // 这里存在s的开头没有空格的情况,即(s[i] != ' ' && i == 0)
            if ((s[i] == ' ' || (s[i] != ' ' && i == 0)) && start >= 0) {
                end = s[i] == ' ' ? i + 1 : i;	
                ans += s.substr(end, start - end + 1);
                ans += ' ';
                start = -1;
                end = -1;
            }
        }
        return ans.substr(0, ans.size() - 1);
    }
};

你可能感兴趣的:(LeetCode,java,算法,开发语言)