剑指 Offer 58 - I. 翻转单词顺序 - 力扣(LeetCode) (leetcode-cn.com)
思路:从后向前扫描字符串,把扫描出的单词按顺序拼接在一起
代码
class Solution {
public:
string reverseWords(string s) {
//去掉字符串开头的空格,用begin定位第一个单词的首字母
int begin = 0;
while (s[begin] == ' ') ++begin;
string res("");
int back = s.length() - 1;
while (back >= begin) {
//用back定位最后一个单词的最后一个字母
if (s[back] != ' ') {
int behind = back - 1;
//用behind定位最后一个单词前面的空格
while (behind >= begin && s[behind] != ' ') --behind;
//把扫描到的这个单词拼接到res上
res += s.substr(behind + 1, back - behind);
if(behind >= begin) res += " ";
back = behind;
}
else --back;
}
return res;
}
};



