剑指 Offer 58 - I. 翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
示例 1:
输入: “the sky is blue”
输出: “blue is sky the”
双指针
class Solution {
public:
string reverseWords(string s) {
if(s == " ") return "";
string res = "";
int i = s.length() - 1;
while(i >= 0){
while(i >= 0 && s[i] == ' ') i--;
if(i < 0) break;
int j = i;
while(i >= 0 && s[i] != ' ') i--;
res += s.substr(i + 1, j - i) + " ";
while(i >= 0 && s[i] == ' ') i--;
j = i;
}
if(!res.empty()) res.pop_back();
return res;
}
};