剑指offer——翻转单词顺序
来源:互联网 发布:csp软件下载 编辑:程序博客网 时间:2024/06/05 18:51
题目描述:
最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思想:
可以发现,要对一个句子进行翻转,可以先对整个句子进行翻转,之后再对每个单词进行翻转。而不论是返回句子还是翻转单词,都是对一个字符串进行翻转,所以可以实现一个翻转函数,对从start到end位置的字符进行翻转,直到start大于end的值。
代码实现:
public class Solution { public String ReverseSentence(String str) { if(str == null || str.length() == 0) return str; //先翻转整个句子 char[] cs = str.toCharArray(); int begin = 0; int end = cs.length -1; reverse(cs, begin, end); begin = end = 0; //再翻转每个单词 while(begin<cs.length){ if(cs[begin]==' '){//如果第一个位置就遇到空格,说明不是一个有效的单次 begin++; end++; }else if(end == cs.length || cs[end] == ' '){ //当end为空时,说明一个单次的结束 reverse(cs,begin,--end); begin = ++end; }else{ //end没有遇到空格 end++; } } return new String(cs); } private void reverse(char[] str,int begin,int end){ while(begin <=end){ char temp = str[begin]; str[begin] = str[end]; str[end] = temp; begin++; end--; } } }
1 0
- 剑指offer——翻转单词顺序
- 剑指offer—翻转单词顺序列
- 剑指offer—翻转单词顺序列
- 剑指Offer——翻转英文句子中的单词顺序
- 剑指offer——翻转单词顺序列
- 剑指offer——翻转单词顺序列
- 剑指offer——翻转单词顺序列
- 剑指Offer——(44)翻转单词顺序列
- 剑指Offer—44—翻转单词顺序列
- 剑指offer——44.翻转单词顺序序列
- 剑指Offer—编程题42(翻转单词顺序)
- 【剑指offer】翻转单词顺序
- 剑指offer-翻转单词顺序
- 剑指offer 翻转单词顺序
- 剑指offer-翻转单词顺序
- 剑指offer — 翻转单词
- 剑指Offer 1361 翻转单词顺序
- 剑指Offer之翻转单词顺序
- 利用EditText的RightDrawable切换密码显示
- 计算机考试相关证书 (一)
- 一种通用的DAO访问方法
- jquery.cookie.js操作cookie的使用方法
- platform_driver平台设备驱动模型
- 剑指offer——翻转单词顺序
- 杭电5744之Keep On Movin
- 203. Remove Linked List Elements
- com.squareup.okhttp.Interceptor
- BOM对象
- 关于android中的BuildConfig
- BootStrap 列表组件
- 谈谈MVC模式
- 计算机考试相关证书 (二)