题目
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
解题
下面给出一种比较优的解题算法。
public class Solution {
public String ReverseSentence(String str) {
if( str == null || str.length()<=0)
return str;
char[] chs = str.toCharArray();
int len = chs.length;
int i = 0;
String tmp = "";
String result = "";
while(i < len){
if(chs[i] == ' '){ // 找到空格
result = " " + tmp + result;// 加在result的前面 才能逆序
tmp = "";
}else{
tmp = tmp + chs[i]; // 加在后面,保证原始顺序
}
i++;
}
if(tmp.length()!=0){ // 最后一个单词
result = tmp + result;
}
return result;
}
}