用双指针进行遍历,当两个字符一样的时候再用循环判断是否是双重叠。
#include <iostream>
using namespace std;
int main()
{
while(1){
string a;
cin>>a;
if(a.size()<1)
continue;
if(a=="q")
return 0;
int max=0,star=0,fin=0;
for(int i=0;i<a.size();i++)
for(int j=i+1;j<a.size();j++){
if(a[i]==a[j]){
int m=i,n=j;
while(m<j&&n<a.size()){
if(a[m]!=a[n])
break;
m++,n++;
}
if(m==j&&j-i>max){
max=j-i;
star=i;
fin=j;
}
}
}
if(max==0){
cout<<"no baba"<<endl;
continue;
}
string res(&a[star],&a[star+max*2]);
cout<<res<<endl;
}
}