64,690
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
void substr(char *a)//统计数组a中重复出现的最长的子序列
{
for(int n = 0; a[n]!='\0'; ++n);
int count = 1;
for (int len=n-1; len>0; --len)//len:子串的长度
{
for (int begin=0; begin<=n-1-len; ++begin)//begin:子串的首字符的位置
{
for (int match_begin=1; match_begin<=n-len-begin; ++match_begin)//match_begin:匹配字符串与被匹配字符串的距离
{
int i;
for (i=begin; i<begin+len; ++i)//字符串匹配
{
if (a[i]!=a[i+match_begin])
{
break;
}
}
if (i==begin+len)//匹配成功
{
++count;//统计匹配成功的次数
}
}
if (count>=2)
{
for (int i=0; i<len; ++i)
{
cout<<a[begin+i];
}
return;
}
count = 1;
}
}
return;
}
int main(int argc, char* argv[])
{
char *a = "abcdabc";
substr(a);
cout<<endl;
return 0;
}