翻转单词顺序列
2015-09-02 01:07
260 查看
JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
方法1:普通方法,遇到‘ ’就取出来赋值。
方法二:先局部翻转,再统一翻转,同上一题翻转字符串。
i记录字符,j记录‘ ’
方法1:普通方法,遇到‘ ’就取出来赋值。
class Solution { public: string ReverseSentence(string str) { if(str.size()<1) return ""; string::iterator left=str.end()-1; string::iterator right=str.end(); string s; while(left!=str.begin()){ if(*left==' '){ for(string::iterator it=left+1;it<right;it++){ s+=*it; } s+=' '; right=left; left--; continue; } left--; } for(string::iterator it=left;it<right;it++) s+=*it; return s; } };
方法二:先局部翻转,再统一翻转,同上一题翻转字符串。
i记录字符,j记录‘ ’
class Solution { public: string ReverseSentence(string str) { for(int i = 0, j = 0; i < str.length() && j < str.length();){ while(i < str.length() && str[i] == ' ') ++i; j = i; while(j < str.length() && str[j] != ' ') ++j; reverse(str, i, j - 1); i = j; } reverse(str, 0, str.length() - 1); return str; } void reverse(string& str, int b, int e){ if(b >= e) return; while(b < e){ char tmp = str[b]; str[b] = str[e]; str[e] = tmp; b++; e--; } } };
相关文章推荐
- Android中bindService的使用及Service生命周期
- 操作系统学习--进程
- Java面试题全集(中)
- 16-Application Example Photo OCR
- [LeetCode#13] Roman to Integer
- linux 目录结构及其相关命令
- GIT的介绍,安装,使用和与Eclipse的集成
- Unity3D之NGUI的5种点击事件的实现方式及在3D场景中点透的情况
- Java面试题全集(上)
- usaco Sorting a Three-Valued Sequence
- 最好的树状数组学习资料!(翻译)
- 15-Large Scale Machine Learning
- JsonObject
- mysql 数据库某字段中某段文字的替换
- 关于Mac下第三方包管理工具cocoapods的使用
- ANT 实战
- Hessian入门相关
- 定义对象
- 对象类型object
- SSH证书连接配置DEBUG步骤