[LeetCode186]Reverse Words in a String II
来源:互联网 发布:京东联盟网站源码 编辑:程序博客网 时间:2024/06/05 06:47
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.The input string does not contain leading or trailing spaces and the words are always separated by a single space.For example,Given s = "the sky is blue",return "blue is sky the".Could you do it in-place without allocating extra space?Related problem: Rotate ArrayHide Company Tags AmazonHide Tags StringHide Similar Problems (M) Reverse Words in a String (E) Rotate Array
这题好像在career cup上见过。一下子就想到: reverse every word first then reverse the whole sentence
.
class Solution {public: void reverseWords(string &s) { int start = 0; reverse(s.begin(), s.end()); for (int i = s.find_first_of(" "); i<s.size(); i = s.find_first_of(" ", i+1)) { reverse(s.begin()+start, s.begin()+i); start = i + 1; } reverse(s.begin()+start, s.end()); }};
另外一种。
class Solution {public: void reverseWords(string &s) { for(int i = 0, j = 0; i<s.size(); i = j+1){ j = i; while(j<s.size() && !isblank(s[j])) ++j; reverse(s.begin()+i, s.begin()+j); } reverse(s.begin(), s.end()); }};
isblank(): Check if character is blank.
update: 这道题比之前那道(LeetCode151)简单很多,因为之前的会可能有trailing or leading spaces 并且word 之间的space并不是只有一个的。
贴个code:
class Solution {public: void reverseWords(string &s) { if(s.empty()) return; int head = 0, tail = s.size()-1, start = 0; while(tail >=0 && isblank(s[tail])) --tail; while(head < s.size() && isblank(s[head])) ++head; s = s.substr(head, tail-head+1); for(int i = s.find_first_of(" "); i<s.size(); i = s.find_first_of(" ", i+1)){ while(i<s.size() && isblank(s[i+1])) s.erase(i,1);//delete duplicate " "! reverse(s.begin()+start, s.begin()+i); start = i+1; } reverse(s.begin()+start, s.end());//reverse the last word first. reverse(s.begin(), s.end()); }};
0 0
- [LeetCode186]Reverse Words in a String II
- Reverse Words in a String II
- leetcode Reverse Words in a String II
- leetcode Reverse Words in a String II
- Reverse Words in a String II
- [Leetcode]Reverse Words in a String II
- Reverse Words in a String II
- *LeetCode-Reverse Words in a String II
- Reverse Words in a String II
- 【Leetcode】Reverse Words in a String II
- Reverse Words in a String II
- Reverse Words in a String II
- Reverse Words in a String II
- Reverse Words in a String II
- [LeetCode] Reverse Words in a String II(in-place 算法)
- Leetcode NO.186 Reverse Words in a String II
- LeetCode - Reverse Words in a String I && II
- LeetCode 题解(262) : Reverse Words in a String II
- 一个简单的马尔可夫过程例子
- Volley源码解析
- B-树和B+树的应用:数据搜索和数据库索引【转】
- S3C6410的tv out输出lcd的内容
- [LeetCode170]Two Sum III - Data structure design
- [LeetCode186]Reverse Words in a String II
- [LeetCode243]Shortest Word Distance
- [LeetCode244]Shortest Word Distance II
- [LeetCode245] Shortest Word Distance III
- [Web前端]梳理-JavaScript.5.函数,6.作用域
- servlet解决浏览器的跨域
- [Rman]Rman增量备份level012的区别
- 不要走上技术分析之路
- 425 Unable to build data connection: Connection refused