Wednesday, June 7, 2017

151. Reverse Words in a String

二刷
还是一万个bug
然后直接抄答案了
53.30 %
public class Solution {
    public String reverseWords(String s) {
        String[] strs = s.trim().split("\\s+");
        StringBuilder sb = new StringBuilder();
        for (int i = strs.length - 1; i > 0; i--) {
            sb.append(strs[i]).append(" ");
        }
        return sb.append(strs[0]).toString();
    }
}

一刷
很简单的一道题竟然debug了二十多分钟
有一个坑就是split这个函数
如果输入是 “ 1”的话 split之后会变成 String[] array = {"", "1"}
所以!!要先check这里是否存在长度为0的String"",而且因为是String所以必须用.equals
本来说用2pointers但是其实可以更简单 直接倒着循环一遍就可以了
关键是""这个坑

public class Solution {
    public String reverseWords(String s) {
        if (s == null || s.length() == 0) return s;
        String[] array = s.split(" ");
        StringBuilder sb = new StringBuilder();
        for (int i = array.length - 1; i >= 0; i--) {
            if (!array[i].equals("")) {
                sb.append(array[i]).append(" ");
            }
        }
        return sb.length() == 0 ? "" : sb.substring(0, sb.length() - 1);
    }
}

No comments:

Post a Comment