剑指offer58.1 翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
为简单起见,标点符号和普通字母一样处理。
例如输入字符串"I am a student.",则输出"student. a am I"。
样例
输入:"I am a student."
输出:"student. a am I"
思路:
首先反转整个句子,然后再反转里面的每个单词。
AcWing-77 C++ code:
class Solution {
public:
void reverse(string &s, int left, int right){
char temp;
while(right > left){
temp = s[left];
s[left] = s[right];
s[right] = temp;
right--;
left++;
}
}
string reverseWords(string s) {
if(s.size() == 0 || s.size() == 1){
return s;
}
int left = 0, right = s.size() - 1;
reverse(s, left, right);
left = 0, right = 0;
while(s[left] != '\0'){
if(s[right] == ' ' || s[right] == '\0'){
reverse(s, left, right - 1);
right++;
left = right;
}else if(s[right] != ' '){
right++;
}
}
return s;
}
};