본문 바로가기
알고리즘

[알고리즘/java] 알맞은 팰린드롬(회문)

by drCode 2021. 9. 6.
728x90
반응형
728x90

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

 

문자열이 입력되면 해당 문자열이 팰린드롬이면 true, 아니면 false를 출력한다.

 

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

 

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

 

반응형

팰린드롬을 만들 때 문자열을 뒤집어서 같은지 같지 않은지 확인만 해주면 된다.

 

정규표현식을 써서 알파벳이 아닌 문자는 공백으로 지워버린다.

 

str = str.replaceAll("[^A-Za-z]", "").toLowerCase();

 

그리고 문자열을 뒤집을 때,

 

for문을 이용해서 하나하나 뒤집어서 문자열을 새로 만드는 것은 비효율적이다.

 

StringBuilder의 reverse를 이용해서 뒤집으면 수월하게 만들 수 있다.

 

String reverse = new StringBuilder(str).reverse().toString();

 

다음 문자열을 입력했을 때, true를 반환하면 된다.

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

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Main m = new Main();
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		System.out.println(m.solution(str));
	}
	
	public static boolean solution(String str) {
		boolean answer = true;
		str = str.replaceAll("[^A-Za-z]", "").toLowerCase();
		String reverse = new StringBuilder(str).reverse().toString();
		
		if(!str.equals(reverse)) answer = false;
		return answer;
	}
}
728x90
반응형

댓글