344.Reverse String(Easy)

2631 ワード

Write a function that takes a string as input and returns the string reversed. 関数を作成し、文字列を入力し、逆順序の文字列を出力します.
Example:
Given s = "hello", return "olleh".
My Solution
(Java) Version 1 Time: 8ms:
逆順文字列は、単純に文字列を最後から取り出し、新しいStringBufferに入れて出力します.
public class Solution {
    public String reverseString(String s) {
        StringBuffer sb = new StringBuffer();
        for (int i = s.length() - 1; i >= 0; i--) {
            sb.append(s.charAt(i));
        }
        return sb.toString();
    }
}

(Java) Version 2 Time: 3ms:
逆順文字列は、実際には文字列全体を逆順に出力する必要はありません.半分にして、その半分を字ごとに置き換えるだけで、文字列全体を半分だけ巡る文字列になります.
public class Solution {
    public String reverseString(String s) {
        char[] chars = s.toCharArray();
        char c;
        for (int i = s.length() - 1, j = 0; j != chars.length / 2; i--, j++) {
            c = chars[j];
            chars[j] = chars[i];
            chars[i] = c;
        }
        return String.valueOf(chars);
    }
}

(Java) Version 3 Time: 4ms:
コード量が少ない方法がありますが、Javaが持っているツールでは一番速くないようです.
public class Solution {
    public String reverseString(String s) {
        return new StringBuffer(s).reverse().toString();
    }
}

(Java) Version 4 Time: 2ms(By Shans.Xia):
2つ以上の判断をすると、多くの例を直接省略し、再循環にi<=jを条件としてarrChar.lengthは一度だけ計算して、少しスピードを上げました.
public class Solution {
        public String reverseString(String s) {
            if (s == null)
                return null;
            if (s.equals(""))
                return s;
            char[] arrChar = s.toCharArray();
            for (int i = 0, j = arrChar.length - 1; i <= j; i++, j--) {
                char temp = arrChar[i];
                arrChar[i] = arrChar[j];
                arrChar[j] = temp;
            }
            return new String(arrChar);
        }
    }

(Java) Version 5 Time: 2ms(By anderson1993):
速度を追求するならば、私だけではありません一人で多くビット演算を使うべきだと感じることができるでしょう、1つの斬新な構想、この解答も2秒で、交換する時ビット演算は速度の向上に対して有限で、あるいはテストのサンプルは極端ではないでしょう
public class Solution {
    public String reverseString(String s) {
        char[] str = s.toCharArray();
            int begin = 0;
            int end = s.length() - 1;
            while (begin < end) {
                str[begin] = (char) (str[begin] ^ str[end]);
                str[end] = (char) (str[begin] ^ str[end]);
                str[begin] = (char) (str[end] ^ str[begin]);
                begin++;
                end--;
            }
            return new String(str);
    }
}