周期串(Periodic Strings, UVa455)

如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。
输入一个长度不超过80的字符串,输出其最小周期

思路:从第二个元素开始和第一个元素比较,如果相同则同时向右循环对比,如果全部一致则最小周期是j-i

#include
#include
#include

using namespace std;

#define MAXN 81

int main()
{
	int i = 0, j = 1;
	char s[MAXN];
	scanf("%s", s);
	
	while(j < strlen(s))
	{
		int i1 = i, j1 = j;
		if(s[j1] == s[i])
		{
			for(; j1 < strlen(s) && s[j1] == s[i1]; i1++, j1++);
			if(j1 == strlen(s)) 
				break;
		}
		else
			j++;
	}
	cout << j-i;
} 

你可能感兴趣的:(每天一道算法题,算法)