题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思路:
首先我想到的就是使用一个split方法,将这个字符串转化为一个数组,然后对这个数组两头交换顺序,然后遍历这个数组,将这个数组中的每一个值都放入到这个stringbuffer中,但是我刚刚开始感觉自己很傻,明明可以不用交换顺序,我可以直接反向遍历这个数组,然后每次遍历一个值加入到这个stringbuffer中并且加上空格,最后一个不用。
但是需要注意的是这里面有一个坑,当我的这个数组是一个空格字符创,那么输出的也应该是一个空格字符创,然后如果是一个空字符串,那么这个时候和空格字符创的处理方式是一样的。
实现(我蹩脚的代码给大家看看):
public class Solution {
public String ReverseSentence(String str) {
if(str.trim().length() == 0){
return str;
}
String[] strs = str.split(" ");
int start = 0;
int end = strs.length - 1;
/*我就是一个傻子,刚刚开始我就使用这种方法,我可以直接遍历和这个数组,然后从后面拿到这个值*/
/*
while(start < end){
String temp = strs[start];
strs[start] = strs[end];
strs[end] = temp;
start ++;
end --;
}
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < strs.length; i ++){
if( i != strs.length - 1){
buffer.append(strs[i] + " ");
}else{
buffer.append(strs[i]);
}
}
return buffer.toString();
*/
StringBuffer buffer = new StringBuffer();
for(int i = strs.length - 1; i >= 0; i --){
buffer.append(strs[i]);
if(i > 0){
buffer.append(" ");
}
}
return buffer.toString();
}
}