还有什么可以优化的地方吗?谢谢
#include <bits/stdc++.h>
#define ll long long
#define pii pair<int,int>
using namespace std;
const int N=2e7;
char s2[N],s[N];
int n,d[N],maxr,c,ans=0,cnt=-1;
int main(){
ios::sync_with_stdio();
cin>>s2;n=strlen(s2);s[++cnt]='#';s[++cnt]='$';
n<<=1,n+=2;for(int i=1;i<=n;i+=2) s[++cnt]=s2[(i-1)/2],s[++cnt]='$';
for(int i=1;i<=n;i++){
if(i<maxr) d[i]=min(d[(c<<1)-i],maxr-i);
while(s[i-d[i]-1]==s[i+d[i]+1]) d[i]++;
if(d[i]+i>maxr) maxr=d[i],c=i;
ans=max(ans,d[i]);
}
cout<<ans;
return 0;
}