题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <iostream>
using namespace std;
int main() {//找回文串
string str;
cin>>str;
int maxnum = 1;
if(str.size()==1){
cout<<1;
return 0;
}
//回文串:中心扩散法,AB B A往两边扩,A B A往两边扩,最边上的两个不需要判断,肯定是1
for(int i=1;i<str.size()-1;i++){//这个循环是判断AB B A型,我选择的中心是中间偏左的字母
if(str[i-1]==str[i]){//判断ABBA
int temp = 0;//记录临时回文数
for(int j=i,k=i;j>=0&&k<=str.size()-1;j--,k++){
if(str[j-1]==str[k]){
temp++;
}else{
break;
}
}
maxnum=max(maxnum,temp*2);//返回较大的
}
if(str[i-1]==str[i+1]){//这个循环是判断ABA型,我选择的中间为中心字母
int temp = 0;//记录临时回文数
for(int j=i-1,k=i+1;j>=0&&k<=str.size()-1;j--,k++){//循环判断
if(str[j]==str[k]){
temp++;
}else{
break;
}
}
maxnum=max(maxnum,temp*2+1);//返回较大的
}
}
cout<<maxnum;
}
// 64 位输出请用 printf("%lld")


腾讯成长空间 6036人发布