Reverse Words in a String -- leetcode
2015-06-10 07:43
337 查看
Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
click to show clarification.
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.
基本思路:
题目要求,将句子出现的单词顺序逆转一下,但单词本身不逆转。
1. 先将字符串整体reverse;
2. 再将每个单词作一下reverse。
3. 由于存在前导空格,单词之间,多个空格的情况。 需要将单词向前作移动,以压缩空格。
以下代码中,变量p表示,处理已经完成的末尾。也即下一个单词移动的目标位置。
变量q表示,下一个单词的开始位置。
此代码在leetcode上实际执行时间为8ms。
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.
click to show clarification.
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.
基本思路:
题目要求,将句子出现的单词顺序逆转一下,但单词本身不逆转。
1. 先将字符串整体reverse;
2. 再将每个单词作一下reverse。
3. 由于存在前导空格,单词之间,多个空格的情况。 需要将单词向前作移动,以压缩空格。
以下代码中,变量p表示,处理已经完成的末尾。也即下一个单词移动的目标位置。
变量q表示,下一个单词的开始位置。
此代码在leetcode上实际执行时间为8ms。
class Solution { public: void reverseWords(string &s) { reverse(s.begin(), s.end()); int p = 0; int q = 0; for (int i=0; i<s.size(); i++) { if (s[i] == ' ') { if (i == q) ++q; else { reverse(s.begin()+q, s.begin()+i); while (q <= i) s[p++] = s[q++]; } } } reverse(s.begin()+q, s.end()); while (q < s.size()) s[p++] = s[q++]; s.erase(p); if (!s.empty() && s[s.size()-1] == ' ') s.pop_back(); } };
相关文章推荐
- 美国政府所有网站开始使用HTTPS加密
- 《爱编程,爱c++十三期-第三章-c++带默认形参值的函数》
- 第二题 P067
- android中调用支付宝
- Python模块学习笔记— —time与datatime
- WireShark安装及groupadd permission denied 问题解决
- 天题系列: Distinct Subsequences
- springmvc搭框架的第一步
- CSS 清除浮动的写法
- 我们需要有创业精神,但不是每个人都要去创业
- CSS 常用到的一些技巧【转】
- CSS 中一些常见到的BUG及解决办法整理【转】
- OSChina 周三乱弹 —— 碰瓷之程序猿版
- [原创干货]一份优秀的程序员简历诞生的四个阶段
- 澳门之旅
- 黑马程序员——java基础—-反射
- hadoop的压缩解压缩,reduce端join,map端join
- 《梦断代码》阅读笔记02
- 第一题 P066
- Python批量重命名指定文件夹下文件的两种方法