您的位置:首页 > 其它

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

2015-07-03 20:12 423 查看
这个系列的题目都是来源于网络,然后自己写代码,可能不是最佳方法,网上有好的算法我也会给出链接。

题目一[周期串问题]

如果一个字符串可以由某个长度为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: