翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

输入: “the sky is blue”
输出: “blue is sky the”

示例 2:

输入: “ hello world! “
输出: “world! hello”
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:

输入: “a good example”
输出: “example good a”
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

  • 无空格字符构成一个单词。
  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
  • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

  1. string reverseWords(string s) {
  2. if(s.empty()) return "";
  3. string res="";
  4. int right = s.size()-1;
  5. int left = right;
  6. while(left >= 0){
  7. while(left >= 0 && s[left] == ' '){
  8. left--;
  9. right=left;
  10. }
  11. while(left>=0 && s[left] != ' '){
  12. left--;
  13. }
  14. if(left != right){
  15. res+=s.substr(left+1, right-left)+" ";
  16. }
  17. }
  18. if(!res.empty()){
  19. res.pop_back();
  20. }
  21. return res;
  22. }