先将整个字符串反转,然后对每个子字符串反转,然后删除字符串前后空格,最后删除多余的空格

    1. class Solution {
    2. public:
    3. string reverseWords(string s) {
    4. //反转字符串s
    5. //然后将字符串s进行分割
    6. //对子字符串进行反转
    7. //将子字符串进行拼接
    8. reverse(s.begin(), s.end());
    9. int start=0;
    10. for (int i=0;i<s.size();++i) {
    11. if (s[i]==' ') {
    12. reverse(s.begin()+start, s.begin()+i);
    13. start=i+1;
    14. }
    15. }
    16. reverse(s.begin()+start, s.end());
    17. //除去前后空格
    18. int dx=0;
    19. for (int i=0;i<s.size();++i) {
    20. if(s[i]==' ') {
    21. dx++;
    22. }else{
    23. break;
    24. }
    25. }
    26. s.erase(0,dx);
    27. //删除后面的空格
    28. dx=0;
    29. int i;
    30. for (i=s.size()-1;i>0;i--) {
    31. if(s[i]==' ') {
    32. dx++;
    33. }else{
    34. break;
    35. }
    36. }
    37. s.erase(i+1, dx);
    38. //删除多余的空格
    39. for (int i=0;i<s.size();++i) {
    40. if (s[i]==' ') {
    41. int dx=0;
    42. for (int j=i+1;j<s.size();++j) {
    43. if (s[j]==' ') {
    44. dx++;
    45. }else {
    46. break;
    47. }
    48. }
    49. if (dx>0) {
    50. s.erase(i+1, dx);
    51. }
    52. }
    53. }
    54. return s;
    55. }
    56. };