알고리즘/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