剑指offer题解 翻转单词顺序列
2016-06-24 11:40
651 查看
题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
细节太繁琐。
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
细节太繁琐。
public class Solution { public String ReverseSentence(String str) { if(str==null) return null; char[] temp=new char[str.length()]; for(int i=0;i<str.length();i++){ temp[i]=str.charAt(i); } for(int i=0;i<temp.length/2;i++){ char ss=temp[i]; temp[i]=temp[temp.length-i-1]; temp[temp.length-i-1]=ss; } int start=0; int end=0; while(end<temp.length){ if(temp[start]==' '){ start++; end++; }else if(temp[end]==' '){ int mid=(start+(end-1))/2; for(int i=start;i<=mid;i++){ char ss=temp[i]; temp[i]=temp[end-1-(i-start)]; temp[end-1-(i-start)]=ss; } end++; start=end; }else if(end==temp.length-1){ int mid=(start+end)/2; for(int i=start;i<=mid;i++){ char ss=temp[i]; temp[i]=temp[end-(i-start)]; temp[end-(i-start)]=ss; } break; }else{ end++; } } return new String(temp); } }
相关文章推荐
- nodejs 学习
- jQuery插件cxSelect多级联动下拉菜单实例解析
- 使用bootstrapvalidator的remote验证经验
- Javascript 严格模式详解
- Sublime Text 3 配置
- jQuery下拉框的简单应用
- javascript常见知识点整理1
- CSS3 Flexbox 弹性布局
- json
- 深入浅出 React Native:使用 JavaScript 构建原生应用
- 浅谈json取值(对象和数组)
- JavaScript 笔记
- 关于Json中null的问题以及宏的返回值(转载)
- SharedPreferences 数据本地化
- js——认识js 变量 函数 各种对话框 输出
- BPTMQEditor文档编辑器插件开发(基于bootstrap[它的一些样式非常不错])
- [前端笔记]第一篇:html
- json对象与数组以及转换成js对象的简单实现方法
- jQuery实现点击弹出背景变暗遮罩效果实例代码
- Why Protocol Buffer So Fast? ----protobuf编码详解