思路:首先我们要枚举长度,然后从前往后遍历,判断是否存在改长度的重复串。
代码:
void solve(){
string s;
cin >> s;
int n = s.size();
int ans = 0;
for(int len = n / 2;len >= 1;len --){
int t = 0;
for(int i = 0;i + len < n;i ++){
if(s[i] == s[i + len] || s[i] == '?' || s[i + len] == '?'){
t += 1;
if(t == len){
ans = max(ans,len);
break;
}
}else{
t = 0;
}
}
}
cout << ans * 2 << endl;
}