算法提高 周期字串

举报
陈言必行 发表于 2021/08/14 00:05:28 2021/08/14
【摘要】 问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事来搪塞右右。   我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。   例如:   字符串’abcabcabcabc’周期为3...

问题描述
右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事来搪塞右右。
  我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。
  例如:
  字符串’abcabcabcabc’周期为3,因为它是由4个循环’abc’组成的。它同样是以6为周期(两个重复的’abcabc’)和以12为周期(一个循环’abcabcabcabc’)。
  右右现在想给他的朋友大灰狼转述妈妈讲的故事,请帮他写一个程序,可以测定一个字符串的最小周期。
输入格式
一个最大长度为100的无空格的字符串。
输出格式
一个整数,表示输入的字符串的最小周期。
样例输入
HaHaHa
样例输出
2
样例输入
Return0
样例输出
7


       
  1. import java.util.Scanner;
  2. public class Main{
  3. publicstatic void main(String[] args) {
  4. Scanner sc = newScanner(System.in);
  5. String s = sc.nextLine();
  6. int len = s.length();
  7. booleanfind=true;
  8. for(int k=1; k
  9. if(len%k == 0){
  10. //k能被len整除,k有可能是要找的
  11. for(int i=k; i
  12. if(s.charAt(i) ==s.charAt(i%k)){
  13. find = true; //继续循环
  14. }else{
  15. //k不是我们要找的
  16. find = false;
  17. break;
  18. }
  19. }
  20. if(find){
  21. //终于找到了
  22. System.out.println(k);
  23. break;
  24. }
  25. }
  26. }
  27. if(!find){
  28. System.out.println(len);
  29. }
  30. }
  31. }

 

注:此题小编只得到了90分,修改多次也未测试通过,,有什么改进方案,还请各位大神评论,私信,,,

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/76092108

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。