同样还是水题一枚,不过这个题目的算法实现很多,我首先想到的就是保存每个单词,然后依次拼接即可。需要注意的是string的substr(int a,int b)函数中a为偏移量,b为子串长度,所以需要注意防止越界而crash掉。
代码如下:
class Solution {
public:
void reverseWords(string &s) {
vector<string> v;
int size = s.length();
int index;
for(int i=0;i<size;++i){
while(i<size&&s[i]==' ')
++i;
if(i>=size)
break;
index = i;
while(index<size&&s[index]!=' ')
++index;
v.push_back(s.substr(i,index-i));
i = index-1;
}
s = "";
if(!v.empty()){
for(int i=v.size()-1;i>0;--i){
s = s.append(v[i]);
s = s.append(" ");
}
s = s.append(v[0]);
}
}
};