#include <array>
#include <cstdint>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
string ss;
void setstr(string s){
int n=2*s.size()+1;
for(int i=0, j=0;i<n;i++){
ss+=(i%2)==0?'#':s[j++];
}
}
int getLongestPalindrome(string A) {
// write code here
int maxn=0;
std::array<int , 2005>a;
setstr(A);
int c=0,r=0,i=0,len;
for(;i<ss.size();i++){
len=i<r?min(a[2*c-i],r-i):1;
while(i+len<ss.size()&&i-len>=0&&ss[i+len]==ss[i-len]){
len++;
}
if(i+len>r){
r=i+len;
c=i;
}
maxn=max(len,maxn);
a[i]=len;
}
return maxn-1;
}
};