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; } };