동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다.
동호는 규완이를 위한 깜짝 선물을 준비했다. 동호는 규완이가 적어놓고 간 문자열 S에 0개 이상의 문자를 문자열 뒤에 추가해서 팰린드롬을 만들려고 한다. 동호는 가능하면 가장 짧은 문자열을 만들려고 한다.
동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력하는 프로그램을 작성하시오.
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 최대 50이다.
첫째 줄에 동호가 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력한다.
abab
5
길이가 짝수일 경우
길이가 짧은 것을 answer에 담는다.
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] chars = br.readLine().toCharArray();
int len = chars.length;
int answer = (len-1) * 2 + 1;
if (len == 1){
System.out.println(1);
return;
}
// 홀수일 경우
loop : for (int i = len-2 ; i > len/2-1 ; i--){
for (int j = 1; j + i < len; j++){
if (chars[i-j] != chars[i+j]) continue loop;
}
answer = Math.min(answer, i * 2 + 1 );
}
// 짝수일 경우
int end = len;
if (len % 2 == 1) end++;
loop : for (int i = len-2 ; i >= end/2-1 ; i--){
for (int j = 1; j + i < len; j++){
if (chars[i-j+1] != chars[i+j]) continue loop;
}
answer = Math.min(answer, (i+1)*2) ;
}
System.out.println(answer);
}
}