https://school.programmers.co.kr/learn/courses/30/lessons/12904
앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다.
문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요.
예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다.
- 문자열 s의 길이 : 2,500 이하의 자연수
- 문자열 s는 알파벳 소문자로만 구성
class Solution {
public int solution(String s) {
int answer = 1;
int size = s.length();
boolean[][] dp = new boolean[size][size];
for(int idx = 0; idx < size; idx++) {
dp[idx][idx] = true;
if(idx == size - 1) break;
if(s.charAt(idx) == s.charAt(idx + 1)) dp[idx][idx + 1] = true;
}
for(int len = 3; len <= size; len++) {
for(int idx = 0; idx <= size - len; idx++) {
if(s.charAt(idx) == s.charAt(idx + len - 1) &&
dp[idx + 1][idx + len - 2]) {
dp[idx][idx + len - 1] = true;
answer = Math.max(answer, len);
}
}
}
return answer;
}
}