基本思路:先反转整个字符串,这样可以让单词之间的相对顺序满足,但是每个单词本身倒序,所以接下来只要通过查找空格,确定每个单词并反转就行了。
class Solution { public: string ReverseSentence(string str) { if (str == "") return str; int n = str.length(); reverse(str.begin(), str.end()); int l = 0; while (l < n) { while (l < n && str[l] == ' ') l++; int r = str.find(' ', l); if (r == string::npos) { reverse(str.begin() + l, str.end()); break; } else { reverse(str.begin() + l, str.begin() + r); l = r + 1; } } return str; } };