您的位置:首页 > Web前端

剑指offer题解 翻转单词顺序列

2016-06-24 11:40 651 查看
题目描述

牛客最近来了一个新员工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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: