151. Reverse Words in a String
2016-03-18 22:31
477 查看
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.
Subscribe to see which companies asked this question
class Solution {
public:
void reverseWords(string &s) {
reverse(s.begin(),s.end());
int before=0;
//int end=0;
for(int i=0;i<s.size();i++){
if(s[i]==' '){
while(s[i+1]==' '){
s.erase(s.begin()+i+1);
}
reverse(s.begin()+before,s.begin()+i);
before=i+1;
//end=i;
}
}
reverse(s.begin()+before,s.end());
int j=0;
while(s[j]==' '){
s.erase(s.begin()+j);
//j++;
}
int end=s.size();
while(s[end-1]==' '){
s.erase(s.begin()+end-1);
}
if(s[end-1]==' '){
s.erase(s.begin()+end);
}
}
};
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.
Subscribe to see which companies asked this question
class Solution {
public:
void reverseWords(string &s) {
reverse(s.begin(),s.end());
int before=0;
//int end=0;
for(int i=0;i<s.size();i++){
if(s[i]==' '){
while(s[i+1]==' '){
s.erase(s.begin()+i+1);
}
reverse(s.begin()+before,s.begin()+i);
before=i+1;
//end=i;
}
}
reverse(s.begin()+before,s.end());
int j=0;
while(s[j]==' '){
s.erase(s.begin()+j);
//j++;
}
int end=s.size();
while(s[end-1]==' '){
s.erase(s.begin()+end-1);
}
if(s[end-1]==' '){
s.erase(s.begin()+end);
}
}
};
相关文章推荐
- Boost环境配置及遇到的问题解决方案
- openwrt 显示系统版本和GCC的版本
- (整理)SQL server 2012 中文乱码与5030错误
- << >>
- 11. 接口和抽象类区别
- bzoj 2005: [Noi2010]能量采集
- <我的C++程序>简单的学生信息管理系统
- 最长上升子序列、最长公共上升子序列
- Linux系统程序包管理工具 RPM
- 2016蓝桥杯假期任务之《打印十字图》
- android学习——activity实现动画切换
- 顺序表(C语言)
- C#高级编程 (第六版) 学习 第七章:委托和事件
- web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份
- BZOJ 2555: SubString
- 获取字符串或数组元素
- markdown简明语法
- Linux Shell 编程语法
- 添加和删除元素:
- 第三周作业(软件项目与过程管理)