翻转句子中单词的序列

题目

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母同样处理。 
例如输入“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;
    }
}
相关文章
相关标签/搜索