每天一道LeetCode-----以单词为单位逆序字符串,每个单词之间以一个空格分隔(原字符串中可能有多个空格)
生活随笔
收集整理的這篇文章主要介紹了
每天一道LeetCode-----以单词为单位逆序字符串,每个单词之间以一个空格分隔(原字符串中可能有多个空格)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Reverse Words in a String
原題鏈接Reverse Words in a String
將字符串以單詞為單位逆序,每個(gè)單詞之間以一個(gè)空格間隔(原字符串中可能有多個(gè)空格)
逆序的方法就是先整體逆序,然后從頭到尾每個(gè)單詞逆序。不容易處理的是單詞間空格,只能一個(gè)個(gè)字符移動(dòng)
代碼如下
class Solution { public:void reverseWords(string &s) {std::reverse(s.begin(), s.end());int front = 0;int prev = 0;for(int i = 0; i <= s.size(); ++i){if(i < s.size() && s[i] != ' '){s[prev++] = s[i];}else{if(i > 0 && s[i - 1] != ' '){/* 逆序單詞的時(shí)候帶著空格逆序 */if(front != 0)s[prev++] = ' ';std::reverse(s.begin() + front, s.begin() + prev);front = prev;prev = prev;}}}s = s.substr(0, prev);} };總結(jié)
以上是生活随笔為你收集整理的每天一道LeetCode-----以单词为单位逆序字符串,每个单词之间以一个空格分隔(原字符串中可能有多个空格)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++11学习笔记-----线程库std
- 下一篇: 每天一道LeetCode-----在给定