输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母同样处理。
例如输入“I am a student.”,则输出“student. a am I”。java
下面给出一种比较优的解题算法。算法
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; } }