#leetcode#Reverse String

好久没刷题,准备刷起来了,leetcode都300多题了, 世界变化太快


随便找了个简单题,Reverse String,很自然就想到用StringBuilder从尾到头撸一遍,代码如下

public class Solution {
    public String reverseString(String s) {
        if(s == null || s.length() == 0){
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for(int i = s.length() - 1; i >= 0; i--){
            sb.append(s.charAt(i));
        }
        
        return sb.toString();
    }
}

提交了一下Accepted,难道这题就这么直白吗?

看了一下Discuss,不刷提水平确实还是差了点,一个pointer遍历是O(n),two pointers就是1/2 O(n), 同样是O(n), 速度差了一倍, 一个6ms, 一个3ms

public class Solution {
    public String reverseString(String s) {
        if(s == null || s.length() == 0){
            return "";
        }
        char[] arr = s.toCharArray();
        int i = 0;
        int j = s.length() - 1;
        while(i < j){
            char tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
            i++;
            j--;
        }
        return new String(arr);
    }
}


https://discuss.leetcode.com/topic/43296/many-acceptable-answers   这个里面还有用byte[ ] 来解的,没怎么用过byte,需要研究一下 

你可能感兴趣的:(LeetCode)