LeetCode || Reverse Words in a String
2015-09-05 17:54
453 查看
class Solution { public: void reverse(string& str, int s, int e) { if(s > e) return; for(int i = s;i<=(s+e)/2 ;i++) { char tmp = str[i]; str[i] = str[e-i+s]; str[e-i+s] = tmp; } } void RemoveBlank(string& s)//移除string s前后的所有空格。 { if(s.empty()) return; s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1); } void reverseWords(string &s) { RemoveBlank(s);//去除两端空格 reverse(s, 0, s.size()-1); int i = 0, j = 0; while(1) { i = j; while(i < s.size() && s[i] == ' ') i++; if(i >= s.size()) break; if(i-j-1>0)//需要移除中间的空格,每个words之间只允许有一个空格 { s.erase(j, i-j-1); //erase后i与j的位置应该发生改变 i = j+1; } j = i; while(j < s.size() && s[j]!=' ') j++; reverse(s, i, j-1); } } };
相关文章推荐
- 条款23:宁以non-member,non-friend 替换member函数
- POJ-1450
- Android 控件之七:Spinner 下拉列表
- 分布式事务JTA 实现之 JOTM
- [工具推荐]_iOS音频批量转换
- 移动端布局浅谈
- TextView的API 中文文档
- 可变参数宏...和__VA_ARGS__
- Cocos2d-JS 创建node节点示例
- 基于1.3.3版本tooltip的datagrid单元格tip实现
- 通知客户端不要缓存
- 关于C++引用的一些注意点
- 一次压力测试经历
- Centos启动默认打开网络
- C#------事物的回滚
- 前台html的样式调试
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- 不懂得理解别人
- hadoop 2.7.1源码导入eclipse
- 下载