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