본문 바로가기

Java/Java 알고리즘 인프런

[Ch.01 - String] 08. 유효한 팰린드롬 (+ replaceAll )

반응형
8. 유효한 팰린드롬

 

설명

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

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

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

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

입력

첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다.

출력

첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다.

 

예시 입력 1 

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

예시 출력 1

YES

import java.util.*;

public class Main {
	public String solution(String str) {
		StringBuilder sb = new StringBuilder();
		String answer = "YES";
		str = str.toLowerCase();

		for (char x : str.toCharArray()) {
			if (Character.isLetterOrDigit(x)) {
				sb.append(x);
			}
			str = sb.toString();
		}
		String tmp = sb.reverse().toString();
		if (tmp.equals(str))
			return answer;
		else
			return answer = "NO";
	}

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

한 줄 읽기

kb.nextLine();

 

알파벳 Or 숫자 확인 메서드

Character.isLetter(char)

Character.isDigit(x)

Character.isLetterOrDigit(char)

 

문자열비교 메서드

str2.equals(str)

 

 

+) 세련된 풀이 -> replaceAll 정규식을 이용

str.replaceAll("[^A-Z]", "");
// 알파벳만 두고 나머지 지우기

str.replaceAll("[^0-9]", "");
// 숫자만 두고 나머지 지우기

 

 

import java.util.Scanner;

public class Main {
	public String solution(String str) {
		String answer = "YES";
		StringBuilder sb = new StringBuilder();

		str = str.toUpperCase().replaceAll("[^A-Z]", "");
		String tmp = sb.append(str).reverse().toString();
		if (str.equals(tmp))
			return answer;
		else
			return answer = "NO";

	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.nextLine();

		System.out.println(T.solution(str));

	}
}

 

 

import java.util.Scanner;
  
public class Main {
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String str=in.nextLine();
    
    str=str.replaceAll("[^A-Za-z]", "");
    StringBuilder sb= new StringBuilder();
    
    String tmp=sb.append(str).reverse().toString();
//    System.out.println(tmp+" "+str);
    String answer=str.equalsIgnoreCase(tmp)?"YES":"NO";
    System.out.println(answer);
  }
}

 

 

반응형