
1.练习项目 问题描述给定一个字符串 S 请找出 S 的一个前缀和后缀使得它们拼接后是一个回文串。请输出这个串的最长长度。输入描述输入一行包含一个字符串 S 由小写英文字母组成。输出描述输出一行包含一个整数表示答案。2.选择课程在蓝桥云课中选择题库选择题号17148并开始练习。3.开始练习1源码 #include bits/stdc.husing namespace std;using ullunsigned long long;const int N1e510,base131;ull pre[N],b[N],suf[N];char s[N];int n,p[N];ull getpre(int l,int r){return pre[r]-pre[l-1]*b[r-l1];}ull getsuf(int l,int r){return suf[l]-suf[r1]*b[r-l1];}bool check(int r){ull agetpre(1,r),bgetsuf(n-r1,n);return ab;}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cins1;nstrlen(s1);b[0]1;for(int i1;in;i){b[i]b[i-1]*base;pre[i]pre[i-1]*bases[i];}for(int in;i1;i--){suf[i]suf[i1]*bases[i];}for(int i2*n1;i1;i--){s[i](i1)?#:s[i1];}s[0]^,s[2*n2]$;int C0,R0;for(int i1;i2*n1;i){p[i]iR?min(R-i,p[2*C-i]):1;while(s[ip[i]]s[i-p[i]])p[i];if(ip[i]R)Ci,Rip[i];}int ans0;for(int i1;i2*n1;i){int lenp[i]-1;int idx(i1)?i-11:i1;int l(i1)?idx-len/2:idx-(len1)/2;int r(i1)?idxlen/21:idx(len1)/2;if(check(l))ansmax(ans,2*llen);if(check(n-r1))ansmax(ans,2*(n-r1)len);}coutans\n;return 0;}2检验结果对此代码进行检验检验后无报错提交此代码判题结果为正确100分。3练习心得注意每段代码末尾的分号是否存在 如不存在则需即使补充输入法是否切换为英语模式语法是否错误。