翻转字符串里的单词
原题:
解题方法:
解法一:
class Solution {public:string reverseWords(string s) {vector<string> res;string result = "";int i = 0, j = 0;while (j <= s.size()){if (s[j] == ' ' || s[j] == '\0'){string str = s.substr(i, j - i);if (str != "")res.push_back(str);while (s[j] == ' '){j++;}if (s[j] == '\0') break;i = j;}else{j++;}}for (int i = res.size() - 1; i >= 0; i--){result += res[i];result += " ";}result.resize(result.size()-1);return result;}};
做题小结:
针对解法一:
- 这道题有个坑,在最后如果不使用resize,而是直接把最后一位替换成’\0’,虽然结果看起来是对的,但是没法ac
- 可以使用栈先进后出的特性来逆转
- 可以使用双指针法来移除空格
