每天小练笔1-周期串问题

来源:互联网 发布:新东方 邓剑波 知乎 编辑:程序博客网 时间:2024/05/02 01:39

这个系列的题目都是来源于网络,然后自己写代码,可能不是最佳方法,网上有好的算法我也会给出链接。
题目一[周期串问题]
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3)。字符串的长度小于等于100,由调用者保证。
接口说明
原型:
int GetMinPeriod(char *inputstring);
输入参数:
char * inputstring:字符串
返回值:
int 字符串最小周期


这里写图片描述
可以想到三个循环
代码

#include <iostream>using namespace std;int GetMinPeriod(char *inputstring);int main(){ char * str="abceabcdabceabcd"; cout<<GetMinPeriod(str);}int GetMinPeriod(char *inputstring){ int i,j,k; int size = strlen(inputstring); int halfsize = size/2; char * a = inputstring; bool okflag = true; for(i=1;i<=halfsize;++i)  //i is the second string head char {  okflag = true;  for(j=0;j<i;++j)  {   for(k=i+j;k<size;k+=i)   {    if(a[j] != a[k])    {     okflag = false;     break;    }   }   if(okflag == false)    break;  }  if(okflag)   break; } return i;}
0 0
原创粉丝点击