给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 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 }