문제 분석
풀이전략
팰린드롬아니면 문자 (길이) 반환하기
팰린드롬일 경우 0번째부터 다음 1번째 문자를 비교해서 두 문자가 다르면 (길이-1) 반환
AABBAA -> 팰린드롬이여서 넘어온거니까 굳이 맨앞 맨뒤 문자를 비교하며 하나씩 비교하며 인덱스 증가 감소 할 필요가 없음.
AB -> 이게 두개가 다르다는 의미가 앞이나 뒤 문자 하나를 지우는 경우 팰린드롬이 깨짐
그래서 길이 -1을 하면 정답이 될 수 있음.
두 케이스에서 반환 되지 않았다면 아니라면 (-1) 반환
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// System.out.println("입력:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = br.readLine();
int result = solution(s);
// System.out.println("출력:");
bw.write(result + System.lineSeparator());
br.close();
bw.close();
}
private static int solution(String s) {
String reverse = new StringBuilder(s).reverse().toString();
// case 1. 팰린드롬 아닌 경우: 문자 길이 반환
if (!s.equals(reverse)) {
return s.length();
}
// case 2. 가장 긴 부분 문자열 길이 구하기
for (int i=0 ; i < s.length()/2 ; ++i) {
char character = s.charAt(i);
char nextCharacter = s.charAt(i+1);
if (character != nextCharacter) {
return s.length()-1;
}
}
// case 3. 두 케이스 모두 통과되었다면 -1
return -1;
}
}