25. 자료 구조와 알고리즘/나의 알고리즘

05. 회문 (Palindrome)

THE HEYDAZE 2021. 9. 11. 11:53

함수의 인자로 줄어든 배열을 넘겨준다

회문 (Palindrome)
순서를 거꾸로 읽어도 같은 단어인 회문인지 판단하는 코드 작성 (재귀함수)
예) `LEVEL` 은 거꾸로 읽어도 `LEVEL` 이기 때문에 true, `MOTOR` 는 거꾸로 읽으면 `ROTMO` 이기 때문에 false
public class Palindrome {

    public static void main(String[] args) {

        String name = "level";
        char[] chars = name.toCharArray();
        boolean isPalindrome = isPalindrome(chars);

        System.out.println(isPalindrome);

    }

    private static boolean isPalindrome(char[] name) {

        if (name.length <= 1) {
            return true;
        }

        if (name[0] == name[name.length-1]) {
            return isPalindrome(Arrays.copyOfRange(name, 1, name.length-1));
        } else {
            return false;
        }
    }
}

배열의 크기가 1이하인 경우 true 를 리턴한다

1이하로 적용하는 이유는 예를들어서 level 에서 마지막 v는 비교할 게 자신이기 때문에 비교해도 true 가 나오기 때문

두 문자열이 다른 경우에는 false 를 리턴한다

배열의 맨 앞과 맨뒤를 비교후 같은 경우 다음 문자를 비교하기 위해 재귀함수를 사용하며 배열을 잘라낸다

 

return Palindrome 을 타고 들어가다 if 문 처럼된 것