[LeetCode]344.Reverse String 문제 풀이 보고서

전재 출처 를 밝 혀 주 십시오:http://blog.csdn.net/crazy1235/article/details/51420522
Subject
출처:https://leetcode.com/problems/reverse-string/
Write a function that takes a string as input and returns the string reversed.
Example: Given s = “hello”, return “olleh”.
Explain
이 문 제 는 간단 한 문자열 반전 출력 이라는 뜻 이다.
so easy~~
Solution
solution 1
string 을 char[]배열 로 변환 합 니 다.그리고 for 순환 은 배열 의 끝 에서 앞으로 통합 합 니 다.
public static String reverseString(String s) {
        String result = "";
        char[] ch = s.toCharArray();
        for (int i = ch.length - 1; i >= 0; i--) {
            result += ch[i];
        }
        return result;
    }
public static String reverseString2(String s) {
        String result = "";
        for (int i = s.length() - 1; i >= 0; i--) {
            result += s.charAt(i);
        }
        return result;
    }

solution 2
StringBuffer 류 의 reverse()방법 을 직접 사용 합 니 다.
public static String reverseString3(String s) {
    return new StringBuffer(s).reverse().toString();
}

solution 3
solution 1 의 시간 복잡 도 는 모두 o(n)이다.
실제로 우 리 는 for 순환 의 절반 데이터 길 이 를 할 수 있다.첫 번 째 문 자 를 교환 하면 됩 니 다.
이때 시간 복잡 도 는 o(n/2)이다.
public static String reverseString4(String s) {
        char[] ch = s.toCharArray();
        int halfLength = s.length() / 2;
        char temp;
        for (int i = 0; i < halfLength; i++) {
            temp = ch[s.length() - 1 - i];
            ch[s.length() - 1 - i] = ch[i];
            ch[i] = temp;
        }
        return new String(ch);
    }

solution 4
네 번 째 방안 은[이 또는 연산]을 채택 한다.
교환 율
이 또는 연산 의 성질 및 응용 에 대해 서 는 이 블 로 그 를 참고 할 수 있 습 니 다.
http://www.cnblogs.com/suoloveyou/archive/2012/04/25/2470292.html
public static String reverseString5(String s) {
        char[] ch = s.toCharArray();
        int start = 0;
        int end = ch.length - 1;
        while (start < end) {
            ch[start] = (char) (ch[start] ^ ch[end]);
            ch[end] = (char) (ch[start] ^ ch[end]);
            ch[start] = (char) (ch[start] ^ ch[end]);
            start++;
            end--;
        }
        return new String(ch);
    }

이 방안 의 시간 복잡 도 역시 o(n/2)이다.
solution 5
창 고 를 통 해 하 다.근 데 좀 쓸모 가 없 는 것 같 아 요.O(∩_∩)O~
public static String reverseString6(String s) {
        Stack stack = new Stack<>();
        char[] ch = s.toCharArray();
        String result = "";
        for (int i = 0; i < ch.length; i++) {
            stack.push(ch[i]);
        }
        for (int i = 0; i < ch.length; i++) {
            result += stack.pop();
        }
        return result;
    }

시간 복잡 도 는 o(2n).
solution 6
재 귀적 인 방식 으로 하 다.
public static String reverseString7(String s) {
        int length = s.length();
        if (length <= 1) {
            return s;
        }
        String leftStr = s.substring(0, length / 2);
        String rightStr = s.substring(length / 2, length);
        return reverseString7(rightStr) + reverseString7(leftStr);
    }

좋은 웹페이지 즐겨찾기