string s;
int tot,len[maxn],n;
LL num(){
int mx=0,p=0,cnt=0;
memset(len,0,sizeof len);
for(int i=1;i<=n;i++){
if(mx>i)
len[i]=min(mx-i,len[2*p-i]);
else
len[i]=1;
while(s[i-len[i]]==s[i+len[i]])
len[i]++;
if(len[i]+i>mx)
mx=len[i]+i,p=i;
cnt+=len[i]/2;///除以2是因为这里的字符串之间插入了‘#’
}
return cnt;
}
马拉车求子回文串个数 O(n)
最新推荐文章于 2022-01-29 14:03:16 发布