[string]Reverse Words in a String
2015-12-06 19:02
246 查看
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.
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.
class Solution { public: void formatWords(string& s) { int sSize = s.size(); int i=0,j=0,k=sSize; while(i<sSize && s[i]==' ') i++; while(k>=0 && s[k-1]==' ') k--; bool isFirstSpace = true; while(i<k){ if(s[i] != ' '){ isFirstSpace = true; s[j++] = s[i++]; continue; } if(isFirstSpace){ s[j++] = ' '; isFirstSpace = false; } i++; } s.erase(s.begin()+j,s.end()); } void reverseStr(string &s,int startPos,int endPos) { while(startPos<endPos){ swap(s[startPos++],s[--endPos]); } } void reverseWords(string &s) { formatWords(s); int sSize = s.size(); reverseStr(s,0,sSize); int i=0,startPos = 0; bool isFirstAlph=true; for(;i<sSize;i++){ if(s[i]==' '){ reverseStr(s,startPos,i); isFirstAlph = true; continue; } if(isFirstAlph){ startPos = i; isFirstAlph = false; } } reverseStr(s,startPos,i); } };
相关文章推荐
- Python基础08 面向对象的基本概念
- 【bzoj3238】[Ahoi2013]差异 后缀数组+单调栈
- 符号三角形(hdu 2510 搜索+打表)
- 第十五周——项目一:验证算法
- Eclipse 设置自动提示
- Python基础07 函数
- Python基础06 循环
- Tomcat 发布项目 conf/Catalina/localhost 配置 及数据源配置
- Python基础05 缩进和选择
- 4-5 UVA1590 IP网络(IP Networks)
- C/C++经典面试题(持续更新)
- 学习笔记(3)——串
- saltstack相关的一些总结
- 1657 圆的划分问题
- 至Android虚拟机发送短信和拨打电话
- 自定义View 实现软键盘实现搜索
- BC 65 game
- ubuntu(虚拟机)中使用minicom
- ubuntu(虚拟机)中使用minicom
- js返回,页面暂存