2015年4月16日星期四

Reverse Words in a String leetcode

Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
解题思路:
先用string.split()把string分解成一个个的字符, 把字符存放在一个list里面. 然后从后往前取字符(要加上空格)添加到一个新的string里.
要注意可能以前的string里面有很多空格 所以在list里面取字符时候要判定如果是空格就舍弃.
时间上split操作是O(N),再一次扫描获得结果,也是O(N)。空间上使用了一个String[] 和StringBuffer,也是O(N)

public class Solution {
    public String reverseWords(String s) {
        if (s == null || s.length() == 0){
            return s;
        }
        s.trim();
        String [] str = s.split(" ");
        StringBuilder tem = new StringBuilder();
        for (int i = str.length - 1; i >= 0; i--){
            if (str[i].length() == 0){
                continue;
            }
            tem.append(str[i] + " ");
        }
        return tem.toString().trim();//因为每次都有加空格 所以tem最结尾有一个空格
    }                               // 需要trim来去掉空格
}
参考:http://www.cnblogs.com/EdwardLiu/p/4019970.html

没有评论:

发表评论