翻转字符串里的单词

原题:

解题方法:

解法一:

  1. class Solution {
  2. public:
  3. string reverseWords(string s) {
  4. vector<string> res;
  5. string result = "";
  6. int i = 0, j = 0;
  7. while (j <= s.size())
  8. {
  9. if (s[j] == ' ' || s[j] == '\0')
  10. {
  11. string str = s.substr(i, j - i);
  12. if (str != "")
  13. res.push_back(str);
  14. while (s[j] == ' ')
  15. {
  16. j++;
  17. }
  18. if (s[j] == '\0') break;
  19. i = j;
  20. }
  21. else
  22. {
  23. j++;
  24. }
  25. }
  26. for (int i = res.size() - 1; i >= 0; i--)
  27. {
  28. result += res[i];
  29. result += " ";
  30. }
  31. result.resize(result.size()-1);
  32. return result;
  33. }
  34. };

做题小结:

针对解法一:

  1. 这道题有个坑,在最后如果不使用resize,而是直接把最后一位替换成’\0’,虽然结果看起来是对的,但是没法ac
  2. 可以使用栈先进后出的特性来逆转
  3. 可以使用双指针法来移除空格