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

Posted 如有一味绝境,非历十方生死

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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         }

 

以上是关于557. 反转字符串中的单词 III的主要内容,如果未能解决你的问题,请参考以下文章

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

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

[LeetCode 557] 反转字符串中的单词 III

LeetCode刷题557-简单-反转字符串中的单词 III

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

文巾解题 557. 反转字符串中的单词 III