string(최대길이 : 2500)이 주어졌을 때 이 string의 substring 중 가장 긴 팰린드롬의 길이를 구하세요!
팰린드롬 : 대칭인 문자열
뭔가 DP적으로 풀어야할 거 같았는데.. 그냥 각 certificate를 linear하게 검사하는 식(한 문자 기준으로 대칭이 되는지를 검사)으로 해줬다.
어떤 문자 기준으로 홀수개(예 : abcba의 경우 c 기준 5개)를 검사해줬었는데 전체 테케에서 틀리게 나왔다.
어떤 문자 기준이 아닌 짝수개(예 : abba의 경우 4개)를 검사하는 부분을 추가해줬다.
#include <iostream>
#include <string>
#include<math.h>
using namespace std;
int solution(string s)
{
int answer=0;
for(int i = 0;i<s.size();i++){//i문자 기준으로 대칭성 검사
int candi=1;//홀수개의 경우
for(int j =1;i-j>=0&&i+j<s.size();j++){
if(s[i-j]==s[i+j]){
candi+=2;
}
else{
break;
}
}
answer= max(answer, candi);
candi = 0;//짝수개의 경우
for(int j = 0;i-j>=0&&i+j+1<s.size();j++){
if(s[i-j]==s[i+j+1]){
candi+=2;
}
else{
break;
}
}
answer = max(answer,candi);
}
return answer;
}