UVa 455 周期串 (Periodic Strings)

来源:互联网 发布:淘宝手机怎么改评论 编辑:程序博客网 时间:2024/05/21 10:20

题目意思:

            如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabcabc以3为周期(注意6,12也为周期 ),求的是最小周期。


实现:

#include<stdio.h>#include<string.h>#define maxn 100000int main(){char s[maxn];int n, i;int ok;//freopen("C:\\Users\\zhangwei\\Desktop\\input.txt","r",stdin);//freopen("C:\\Users\\zhangwei\\Desktop\\output.txt","w",stdout);scanf("%d",&n);while(n--){getchar();//这个最好加上 防止换行符 不过没加的时候也AC了scanf("%s",&s);int len = strlen(s);for(i = 1; i <= len; i++ ){//i表示周期 要可以取到 len(注意)ok = 1; //循环开始 置为1if(len % i == 0){//首先要满足 周期能被 字符串长度整除 不然失去意义了for(int j = 0; j < len; j++ ){//这里是扫描字符(不可以取到len 因为数组越界)if(s[j] != s[j%i]){// 核心ok = 0;break;}} if(ok)//目的找到最小的周期 就退出循环break;}}if(ok){//题目要求Outpu 空一个空行printf("%d\n",i);if(n)//最后一个 不能 有空行printf("\n");}}return 0;}

原创粉丝点击