Home G17609. 회문
Post
Cancel

G17609. 회문

문제

image


제출 코드

image


  • 사용 알고리즘 : 문자열


문자열의 양 끝에서부터 시작해서 중간지점에 닿을때까지 양 끝단의 문자열이 일치하는지 체크하였다.

양 끝단의 문자열이 다른 경우, 팰린드롬이 아니거나 둘중 하나의 문자열을 빼면 팰린드롬이 되거나로 나뉘게 된다.

아직 문자열을 빼보지 않은 상태의 경우엔 양 끝의 문자열을 하나씩 빼보면서 체크하지 않은 가운데 문자열들을 다시 확인해보도록 하였다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package gold;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class G17609_palindrome {

	static int isPallindrome(String s, boolean chance) {
		char[] str = s.toCharArray();
		int first=0, last=str.length-1;

		while(true) {
			if(first>=last) {
				if (chance) return 0;
				else return 1;
			}
			else if(str[first]==str[last]) {
				first += 1;
				last -= 1;
			}else {
				if(chance) {
					return Math.min(isPallindrome(s.substring(first+1, last+1), false)
							, isPallindrome(s.substring(first, last), false));
				}else return 2;
			}
		}
	}

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());

		for(int t=0; t<T; t++) {
			System.out.println(isPallindrome(br.readLine(), true));
		}
	}

}
This post is licensed under CC BY 4.0 by the author.