两次翻转,先翻转整个字符串,然后对其中的单词进行翻转。
这里要注意,reverse(s + a, s + b), s为数组名, a, b为长度,这里翻转的范围是s[a] – s[b-1],类似于sort()函数,可以把这个理解为一个左闭右开的区间,所以后面可以用str.end(),因为这个是指向数组最后字符的后一位。
class Solution {
public:
string ReverseSentence(string str) {
reverse(str.begin(), str.end());
int start = 0;
for(int i = 0; i < str.size(); i++){
if(str[i] == ' '){ //碰到空格
reverse(str.begin() + start, str.begin() + i); //翻转单词,注意str.begin() + i是空格位
start = i + 1; //start移到空格后一位
}
if(i == str.size()-1)
reverse(str.begin()+start, str.end());
}
return str;
}
};
s