博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[蓝桥] 算法提高 周期字串
阅读量:6968 次
发布时间:2019-06-27

本文共 1366 字,大约阅读时间需要 4 分钟。

时间限制:1.0s   内存限制:256.0MB

问题描述

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

输入格式

  一个最大长度为100的无空格的字符串。

输出格式

  一个整数,表示输入的字符串的最小周期。

样例输入

HaHaHa

样例输出

2

样例输入

Return0

样例输出

7

1 import java.util.Scanner; 2  3 public class Main { 4     public static void main(String[] args) { 5         Scanner scanner = new Scanner(System.in); 6         String s = scanner.nextLine(); 7         char[] arr = s.toCharArray(); 8         int len = arr.length; 9         int ans = len,k;10         for (int i = 0; i < len; i++) {11             //最短是1,最长是len;12             //周期肯定是总长度的整数倍13             k = i+1;14             if (k > len / 2) {15                 break;16             }17             else if (len % k!= 0)18                 continue;19             int j;20             //确认最短周期i成立21             for (j = k; j < len; j++) {22                 if (arr[j % k] != arr[j])23                     break;24             }25             if (j == len) {26                 ans = k;27                 break;28             }29         }30         System.out.println(ans);31         return ;32     }33 }

 

转载于:https://www.cnblogs.com/youpeng/p/10501622.html

你可能感兴趣的文章
移动端总结
查看>>
认识Arduino,开始嵌入式之旅
查看>>
深入了解Threadlocal
查看>>
HTTP的请求与响应
查看>>
rsync部署使用
查看>>
算法-java排序实现总结
查看>>
VS Code、ATOM这些开源文本编辑器的代码实现中有哪些奇技淫巧?
查看>>
EditorConfig
查看>>
使用Canvas和JavaScript做一个画板
查看>>
用trait实现简单的依赖注入
查看>>
webpack-从0开始写一个webapck v3 loader
查看>>
vue-cli 引入第三方插件终极法!!
查看>>
springboot项目 docker部署实践
查看>>
js 获取窗口、屏幕、页面元素宽高+位置(兼容ie)
查看>>
汤森路透 Thomson Reuters--使用多模型数据库ArangoDB 打造快速安全的简单视图分析...
查看>>
[Webpack并不难]使用教程(三)--- plugins
查看>>
TOP100summit:【分享实录】链家网大数据平台体系构建历程
查看>>
Node Cli 入门
查看>>
2017-10-13 前端日报
查看>>
PHP-X 系列教程:扩展内定义类和对象
查看>>