https://school.programmers.co.kr/learn/courses/30/lessons/12904
문자열 s의 길이 -> 최대 2500
문자열 s는 알파벳 소문자로만 구성됨.
2중문 돌려도 상관없다고생각됨. -> 길이가 2500이 최대기 때문에 시간이 그렇게 오래걸리지 않음.
홀수의 경우는 그대로 해도됨.
짝수의 경우 문제가 발생함.
간과했던점 1 -> 팰린드롬의 길이가 짝수인경우와 홀수의 경우가 대칭이 다르다.
짝수인경우 현재 index 기준부터 비교시작
홀수의 경우 현재 index에서 index -1 과 index -1 에 있는 값들을 비교해서 대칭 체크가 필요하다.
간과했던점 2
구현문제
class Solution
{
public int solution(String s)
{
int max_len = Integer.MIN_VALUE;
for (int idx = 0; idx < s.length(); idx++) {
max_len = Math.max(max_len, odd_palim(s, idx));
max_len = Math.max(max_len,even_palim(s,idx));
}
return max_len;
}
private int even_palim(String s, int idx) {
int cnt = 0;
if(idx == 0 || idx ==s.length()-1)
return cnt;
int left = idx;
int right = idx+1;
while(left >= 0 && right < s.length()){
if(s.charAt(left) == s.charAt(right)){
left-=1;
right+=1;
cnt+=2;
}else{
break;
}
}
return cnt;
}
//팰린드롬 체크
private int odd_palim(String s, int idx) {
int cnt = 1;
if(idx == 0 || idx ==s.length()-1){
return cnt;
}
int left = idx -1;
int right = idx+1;
while(left >= 0 && right < s.length()){
if(s.charAt(left) == s.charAt(right)){
left-=1;
right+=1;
cnt+=2;
}else{
break;
}
}
return cnt;
}
}