Reverse Words in a String
2015-11-17 15:00
369 查看
题目: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.
思路:
本题的思路是每一次在s里面把字符串倒过来,这里是自己写一个倒转的程序。我在自己写的时候发现如果连续出现空格的问题,后来发现有一个连续判断,再额外设置一个变量的方法。在最后记得倒转整个s字符串。另外记得里面一定判断下i是否在整个数组长度之内。
代码:
class Solution {public:
void reverseWords(string &s) {
if(s.empty()) return;
int i=0,k=0;
while(s[i]==' '&&i<s.length()){
i++;
}
//i此时不为空
while(i<s.length()){
int start=k;
while(s[i]!=' '&&i<s.length()){
s[k++]=s[i++];
}//此时i空
if(k>start+1){
reverseSubWord( s, start,k-1);
}
while(s[i]==' '&&i<s.length()){
i++;
}
if(i<s.length()) s[k++]=' ';//一开始是这个地方没有设置,如果i到了最后,就不要设置空格
}
if(k<s.length()){
s.erase(s.begin()+k,s.end());
}
if(k >1) reverseSubWord( s, 0,k-1) ;
}
void reverseSubWord(string &s,int start,int end){
while(start<=end){
swap(s[start],s[end]);
start++;end--;
}
}
};
相关文章推荐
- android EditText自定义样式
- 【转】ubuntu下配置git和github初体验
- android判断手机号的运营商
- EditText 保留两位小数
- VMware Workstation 虚拟机自启动
- Hello World---打不死的小强
- Redis学习笔记2-Redis的集群
- Spinner弹出位置变化
- UVA 题目10401 Injured Queen Problem(DP)
- Data-Driven 3D Voxel Patterns for Object Category Recognition
- .NET项目开发的几个非常重要的项目设置
- java虚拟机分析-字节码指令集
- HorizontalScrollView的滚动到指定位置问题记录
- linux卸载自带jdk与jdk配置
- <%#Eval if判断用法
- php分享十一:PHP实现异步调用方法研究
- Repeater 此属性不存在
- jq-delay()知识点
- android EditText中的inputType
- vim删除多余空行