알고리즘/JAVA

[JAVA] 8. 유효한 팰린드롬

수진보배 2021. 4. 14. 20:43
728x90

설명

 

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다.

문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요.

단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다.

알파벳 이외의 문자들의 무시합니다.

 

예시 입력 1 

found7, time: study; Yduts; emit, 7Dnuof

 

예시 출력 1

YES

 

풀이

 

public class Main  {

    public static void main(String[] args) {
        
        Scanner in = new Scanner(System.in);

        String input = in.nextLine().toLowerCase();
        char[] arr = input.toCharArray();
        String answer = "";

        for(char a : arr ){
        
        //알파벳인지 확인, 알파벳이면 +
            if(Character.isAlphabetic(a)){
                answer += a;
            }
        }

		//문자열을 뒤집는다
        String tmp = new StringBuilder(answer).reverse().toString();

		//뒤집은 문자열과 원래 문자열을 비교
        if( answer.equals(tmp)){
            System.out.println("YES");
        }else {
            System.out.println("NO");
        }


    }
}

 

다른 풀이 - replaceAll

 

public class Main  {

    public static void main(String[] args) {
        
        Scanner in = new Scanner(System.in);

        String input = in.nextLine().toUpperCase();

		// 대문자가 아니면 빈문자로 대체
        input = input.replaceAll("[^A-Z]", "");

		//문자열을 뒤집는다
        String tmp = new StringBuilder(input).reverse().toString();

		//뒤집은 문자열과 원래 문자열을 비교
        if( answer.equals(tmp)){
            System.out.println("YES");
        }else {
            System.out.println("NO");
        }


    }
}
728x90