这个题我们用一个vector<string>s1的容器存放所有的单词,建立string ans再倒序依次添加s[i]再添加空格返回
如何正确地讲单词存入ans?
答:1.使用substr提取单词
2.建立left变量
这算核心的思路了,详解注释看代码的解析
还有更简单的思路,就是先去掉前后所有的空格再进行提取单词
class Solution {
public:string reverseWords(string s) {vector<string>s1;string ans;int n = s.size();int left = 0;for (int i = 0;i <= n;i++){if (i == n||s[i] == ' ')//遇到空格就left=i+1 当i++后left与i重合,继续left=i+1//直到i!=' '这时候left就存在了单词的第一个字母的下标{if (left < i) //left不变,i++直到遇到单词最后一个字母后面的空格或者'\0'(也 //就是i==n)就找到了一个单词{s1.push_back(s.substr(left, i - left));//用substr函数提取单词(无空格)}left = i + 1;//(i一定<=left,当i>left时候就找到了一个单词)}}for (int i = s1.size() - 1;i >= 0;i--){ans += s1[i];if(i!=0)ans += ' ';}return ans;}
};