檢測“雙重疊“字符串C++實現

用雙指針進行遍歷,當兩個字符一樣的時候再用循環判斷是否是雙重疊。

#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;
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章