找到最大的迭代次数串

找到最大的迭代次数串。参考迭代万亿最大数目,找到核心人物,我们可以扩展,找到最大的迭代次数串。


基本思想是把反复次数最大记录下来。并记录起始位置。


#include <iostream>

#include <stdio.h>
using namespace std;
int mystrlen(char *str)
{
   int sum(0);
   char *temp=str;
   while(*temp!='\0')
   {
     ++temp;
++sum;
   }
   return sum;
}
bool contain_sub_str(char *str, char *sub_str)
{
   int len1= mystrlen(str);
   int len2= mystrlen(sub_str);
   int i(0);
   if(len1<len2)
  return false;
   while(i<len2)
   {
     if( *(str+i)!= *(sub_str+i))
break;
++i;
   }
   if(i==len2)
      return true;
   return false;


}
int find_max_repeat(char *str, char *sub_str, int *len)
{
   int i(0);
   int num(0),start(0),len2(mystrlen(sub_str));
   while(*(str+i) !='\0')
   {
if(contain_sub_str(str+i, sub_str)){
 int s=i,k=0;
      while(contain_sub_str(str+i, sub_str))
 {
   i+=len2;
   ++k;
 }
 if(k>num){
    num=k;
         start=s;
 }
}
else
        ++i;
   }
   *len=num;
   return start;
}
int main()
{
   char str[]="abaabaaacdeeabaabaabaabaeefdefdefdefdsceebd";
   int i,j;
   i=find_max_repeat(str, "aba", &j);
   printf("%d,%d\n",i,j);
   i=find_max_repeat(str, "efd", &j);
   printf("%d,%d\n",i,j);
   return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值