class Solution {
public:
string change(string&b)
{
string res="";
for(auto x:b)res=res+x+'#';
return res+'*';
}
int getLongestPalindrome(string A) {
string temp=change(A);
vector<int>dp(temp.length()+1,0);
int mp=0,idd=0,res=0;
for(int i=0;i<temp.length();i++)
{
dp[i]=mp>i?min(dp[2*idd-i],mp-i):1;
for(;temp[i+dp[i]]==temp[i-dp[i]];dp[i]++);
if(mp<i+dp[i])mp=i+dp[i],idd=i;
res=max(res,dp[i]);
}
return res-1;
}
};

京公网安备 11010502036488号