#include "OJ.h"
#include <iostream>
using namespace std;
/*
功能:计算字符串的最小周期。
原型:
int GetMinPeriod(char *string);
输入参数:
char * string:字符串。
返回值:
int 字符串最小周期。
思路:使用i表示字符串可能的周期,从周期为1开始逐渐增大1,当i满足是字符串的周期时返回;
i满足是字符串的周期的条件:1、将前i个字符保存,后面所有的字符串都与该字符串比较,没有不同的字符
2、所有字符串的长度k是i的整数倍
*/
int GetMinPeriod(char *inputstring)
{
/*在这里实现功能*/
if (inputstring == NULL || *inputstring =='\0')
{
return 0;
}
for (int i =1; i <=100; ++i)
{
//char *p = inputstring;
char *temp = new char [i];
bool flag = false;
for (int j =0; j < i ; ++j)
{
temp[j] = inputstring[j];
}
int k = i ;
while (inputstring[k] != '\0')
{
if (temp[k%i] != inputstring[k])
{
flag =true;
break;
}
k++;
}
delete [] temp;
if (flag == false && k%i == 0)
{
return i;
}
}
return 0;
}
int main()
{
char inputstring[13] = "abcabcabcabc";
cout<<GetMinPeriod(inputstring)<<endl;
return 0;
}
周期串问题
最新推荐文章于 2020-07-22 20:11:02 发布