leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String
生活随笔
收集整理的這篇文章主要介紹了
leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
557. Reverse Words in a String III
最簡單的把空白之間的詞反轉(zhuǎn)
class Solution { public:string reverseWords(string s) {vector<int> blank;for(int i = 0;i < s.size();i++){if(s[i] == ' ')blank.push_back(i);}int start = 0;int end;for(int i = 0;i < blank.size();i++){end = blank[i] - 1;reverse(s,start,end);start = end + 2;}reverse(s,start,s.size() - 1);return s;}void reverse(string& s,int start,int end){while(start < end){char tmp = s[end];s[end] = s[start];s[start] = tmp;start++;end--;}return;} };?
151. Reverse Words in a String
151題實際上比557題要難一些。難在,字符串中的空格不再僅僅在字符之間,在字符串的開頭和結(jié)尾都可能有,并且空格的個數(shù)不再僅僅是1,而是有可能有許多。
輸出的要求則是只能是字符+一個空格作為中間的間隔。
思路:先把整個字符串reverse,然后找每個子字符串第一個字符和最后一個,遇到空格都跳過,然后把這些子字符串reverse并+一個空格,最后一個處理的時候,我有點不知道怎么處理多出的末尾
的空格, 就用了一種暴力的方法
class Solution { public:string reverseWords(string s) {if(s.empty())return "";string res = "";reverse(s,0,s.size() - 1);for(int i = 0;i < s.size();i++){if(s[i] != ' '){int j = i;while(s[j] != ' ' && j < s.size())j++;reverse(s,i,j-1);res += s.substr(i,j-i);res += " ";i = j;}}res = res.substr(0,res.size() - 1);return res;}void reverse(string& s,int start,int end){while(start < end){char tmp = s[end];s[end] = s[start];s[start] = tmp;end--;start++;}return;} };?
轉(zhuǎn)載于:https://www.cnblogs.com/ymjyqsx/p/10732793.html
總結(jié)
以上是生活随笔為你收集整理的leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邮储银行信用卡账单怎么查询?五种方法教你
- 下一篇: 兴业银行信用卡申请条件 大额信用卡申请门