본문 바로가기
알고리즘(Java)/String

[알고리즘]String(문자열) 8. 유효한 팰린드롬(Palindrome) - 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하기(알파벳 이외의 문자들 무시)

by snowballchoi 2021. 7. 17.
8. 유효한 팰린드롬
문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램
알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 알파벳 이외의 문자들은 무시합니다.
입력) 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.
출력) 첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.

 

 

1. replaceAll() 이용

import java.util.Scanner;

public class Main {
	
	private static String solution(String str) {
		String answer = "NO";		
		str = str.toUpperCase().replaceAll("[^A-Z]", ""); // 대문자가 아닌 것들을 제거
		String temp = new StringBuilder(str).reverse().toString();	
		if (str.equals(temp)) answer = "YES";
		
		return answer;
	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String str = scanner.nextLine();
		System.out.println(solution(str));
	}

}

 

2.

import java.util.Scanner;

public class Main {
	
	private static String solution(String str) {
		String onlyAlphabet = "";		
		for (char c : str.toCharArray()) {
			if (Character.isAlphabetic(c)) {
				onlyAlphabet += String.valueOf(c);
			}
		}
		str = new StringBuilder(onlyAlphabet).reverse().toString();		
		if (!str.equalsIgnoreCase(onlyAlphabet)) return "NO"; 
		
		return "YES";
	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String str = scanner.nextLine();
		System.out.println(solution(str));
	}

}

결과

입력
hello: welcome, 'emoclew &olleh

결과
YES

 

댓글