557. 反转字符串中的单词 III

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc" 

注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

思路:先将给定的字符串(s)中的单词拆分出来(str),然后单个处理每个单词,拼接成一个新的字符串(ans),返回ans.

总结:

 1 static const auto __ = []()
 2 {
 3     ios::sync_with_stdio(false);
 4     cin.tie(nullptr);
 5     return nullptr;
 6 }();
 7 
 8 class Solution {
 9 public:
10     string reverseWords(string s) {
11         string ans="";
12         vector<string>str;
13         string st = "";
14         for(int i = 0; i < s.length(); i++) {
15             if(s[i] != ' ')
16                 st += s[i];
17             
18             if(s[i] == ' '|| i == s.length()-1) {
19                 str.push_back(st);
20                 st = "";
21                 
22             }
23             
24         }
25         for(int i = 0; i < str.size(); i++) {
26             for(int j = str[i].length() - 1; j >= 0; j--) {
27                 ans += str[i][j];
28             }
29             if(i !=  str.size()-1) {
30                 ans += " ";
31             }
32         }
33         return ans;
34     }
35 };

使用vector容器,数组要用length( )

在处理字符串的单词的时候一开始是↓  发现最后一个单词没法分割出来,后来增加一个条件后解决问题。

 1  vector<string>str;
 2         string st = "";
 3         for(int i = 0; i < s.length(); i++) {
 4             if(s[i] != ' ')
 5                 st += s[i];
 6             
 7             if(s[i] == ' ') {
 8                 str.push_back(st);
 9                 st = "";
10                 
11             }
12             
13         }

 

posted @ 2018-05-14 23:09  听说这是最长的名字了  阅读(1169)  评论(0编辑  收藏  举报