[leetcode] 151. Reverse Words in a String
来源:互联网 发布:微电网储能优化 编辑:程序博客网 时间:2024/05/17 06:47
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
这道题是倒序输出字符串中单词,题目难度为Medium。
最直观的想法是将单词逐个存入栈中,然后依次出栈生成倒序后的字符串。具体代码:
class Solution {public: void reverseWords(string &s) { stack<string> words; string curWord = ""; s += " "; for(auto ch:s) { if(ch == ' ') { if(!curWord.empty()) { words.push(curWord); curWord = ""; } } else curWord += ch; } s = ""; while(!words.empty()) { s += words.top(); words.pop(); if(!words.empty()) s += " "; } }};不过题目要求in-place,所以栈不能用了。我们可以先逐个倒序每个单词,然后再将整个字符串倒序,这样也能够得到所求结果,同时保证了in-place。具体代码:
class Solution {public: void reverseWords(string &s) { int idx = 0, pos = 0, len = 0; while(true) { while(idx < s.size() && s[idx] == ' ') ++idx; if(idx == s.size()) break; if(pos) s[pos++] = ' '; while(idx < s.size() && s[idx] != ' ') s[pos+(len++)] = s[idx++]; reverse(s.begin()+pos, s.begin()+pos+len); pos += len; len = 0; } s = s.substr(0, pos); reverse(s.begin(), s.end()); }};
0 0
- LeetCode 151. Reverse Words in a String
- LeetCode 151. Reverse Words in a String
- [LeetCode]151.Reverse Words in a String
- [leetcode] 151.Reverse Words in a String
- Leetcode-151.Reverse Words in a String
- Leetcode 151. Reverse Words in a String
- [leetcode]151. Reverse Words in a String
- LeetCode 151. Reverse Words in a String
- Leetcode 151. Reverse Words in a String
- LeetCode *** 151. Reverse Words in a String
- LeetCode-151.Reverse Words in a String
- leetcode 151. Reverse Words in a String
- LeetCode - 151. Reverse Words in a String
- [leetcode] 151. Reverse Words in a String
- [Leetcode]151. Reverse Words in a String
- leetcode 151. Reverse Words in a String
- [LeetCode] 151. Reverse Words in a String
- Leetcode-151. Reverse Words in a String
- ViewPager的索引控件
- Fis3 前端工程构建工具
- 华为路由器BGP路由反射器和联邦
- SQL Server2016企业版 附全版本key
- 出入C#界
- [leetcode] 151. Reverse Words in a String
- delphi开发推荐
- SSH自动登录脚本
- soot基础 -- 相关数据结构SootClass,SootMethod,SootBody,Unit的进一步说明
- 华为路由器BGP的路由控制和安全
- Window上编译最新版libCef(Branch 2704)
- 装配psycopg是出错:Error: pg_config executable not found
- Intent探索
- The system is running in low-graphics mode 解决方法Ubuntu