刘汝佳--周期串

比眉伴天荒 2022-06-08 14:53 322阅读 0赞

思路:

题目中说过,字符串可能有多个周期,但因为只需求出一个最小的,可以从小到大枚举各个周期,一旦符合就立刻输出;下面的变量只存在自己的循环中。

代码:

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <string.h>
  4. using namespace std;
  5. int main()
  6. {
  7. char word[100];
  8. scanf("%s",word);
  9. int len=strlen(word); //strlen这个函数得出的是字符串的长度(不包括“\0”)
  10. for(int i=1;i<=len;i++ ) //实际上数组的下标是从零开始的;
  11. if(len%i==0) //可以直接利用此时的i进行下面的判断,更有利于计算 最短周期;
  12. {
  13. int ok=1; //定义标记变量,
  14. for(int j=i;j<len;j++) //通过这个循环,用word[i]这个变量与word[j%i]变量依次进行比较,j%i也就是一个周期
  15. if(word[j]!=word[j%i]) //如果有一个不相同,就跳出循环
  16. {
  17. ok=0;
  18. break;
  19. }
  20. if(ok) {cout<<i<<endl;break;}
  21. }
  22. return 0;
  23. }

发表评论

表情:
评论列表 (有 0 条评论,322人围观)

还没有评论,来说两句吧...

相关阅读

    相关 --开灯问题

    问题描述: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关

    相关 --周期

    思路: 题目中说过,字符串可能有多个周期,但因为只需求出一个最小的,可以从小到大枚举各个周期,一旦符合就立刻输出;下面的变量只存在自己的循环中。 代码:

    相关 --TeX括号

    思路: 本题的关键是,如何判断一个双引号是“左”引号,还是“右”引号,使用一个标记变量即可。 代码: include<iostream>

    相关 --WERTY

    思路: 每输入一个字符,都可以直接输出一个字符,问题在于如何进行这样的变换呢?一个方法是使用if语句或者witch语句,如:if(c==‘w’)putchar(‘Q’