蓝桥杯 ADV-150 周期字符串(字符串处理)(java)
发布日期:2021-06-28 15:58:18
浏览次数:3
分类:技术文章
本文共 1077 字,大约阅读时间需要 3 分钟。
算法提高 周期字串
时间限制:1.0s 内存限制:256.0MB
问题描述
右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山……”这样循环的故事来搪塞右右。
我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。
例如:
字符串’abcabcabcabc’周期为3,因为它是由4个循环’abc’组成的。它同样是以6为周期(两个重复的’abcabc’)和以12为周期(一个循环’abcabcabcabc’)。
右右现在想给他的朋友大灰狼转述妈妈讲的故事,请帮他写一个程序,可以测定一个字符串的最小周期。
我们定义,如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就叫做周期为k的串。
例如:
字符串’abcabcabcabc’周期为3,因为它是由4个循环’abc’组成的。它同样是以6为周期(两个重复的’abcabc’)和以12为周期(一个循环’abcabcabcabc’)。
右右现在想给他的朋友大灰狼转述妈妈讲的故事,请帮他写一个程序,可以测定一个字符串的最小周期。
输入格式
一个最大长度为100的无空格的字符串。
输出格式
一个整数,表示输入的字符串的最小周期。
样例输入
HaHaHa
样例输出
2
样例输入
Return0
样例输出
7
思路如下:
其实这道题我一开始是用枚举的方法,结果超时。
下面的代码是这样的,要明白一点:周期必须是字符串长度的因数(除了1之外)。而且当判断的周期k 大于 字符串长度的一半,则不必要继续判断了(因为大于字符串的长度一半>周期k),如果再判断下去,周期也不会变,自己想一下对不对。。oh,最重要的来了,而且很多人应该会对代码:s.charAt(i)!=s.charAt(i%k)有疑问,这行代码是经典,这个你想一下,左边为实际的字符,右边为字符串的第一个周期的字符。。当你看到这里,应该对这道题大致的思路了解了。。
代码如下:
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); String s=in.next(); int k=1; boolean flag=false; while(!flag){ if(k>s.length()/2){//k大于长度的一半不必继续查找,节省1/4时间,不然运行超时 k=s.length();//字符串的长度是周期 flag=true; } if(s.length()%k==0){//可能是要找的。k是要长度的因数,如果不是长度的因数就可能不够分 for(int i=1;i
转载地址:https://blog.csdn.net/xiaodingqq/article/details/78901511 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月28日 04时26分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
深入解析android核心组件和应用框架,社招面试心得
2019-04-29
深度解析跳槽从开始到结束完整流程,持续更新中
2019-04-29
深度解析跳槽从开始到结束完整流程,面试真题解析
2019-04-29
hashmap扩容过程,字节大神强推千页PDF学习笔记,经典好文
2019-04-29
kotlin面试题!Android大厂高频面试题解析,薪资翻倍
2019-04-29
kotlin面试题!一口气拿了9家公司的offer,已拿offer入职
2019-04-29
retrofit优点,互联网寒冬公司倒闭后,年薪50W
2019-04-29
retrofit原理面试,Android性能优化最佳实践,面试必备
2019-04-29
【工作感悟】Android多进程从头讲到尾,offer拿到手软
2019-04-29
【微信小程序】面试一路绿灯Offer拿到手软,好文推荐
2019-04-29
Android之内存泄漏调试学习与总结,分享PDF高清版
2019-04-29
事件分发机制怎么回答,Android开发究竟该如何学习,使用指南
2019-04-29
python3 语法注意
2019-04-29
C语言复习
2019-04-29
Spring:源码解读Spring IOC原理
2019-04-29
Spring AOP原理分析一次看懂
2019-04-29
Spring AOP的实现原理(二)
2019-04-29
Spring AOP的实现原理(三)
2019-04-29
Spring AOP的实现原理(四)
2019-04-29
Spring AOP的实现原理(五)
2019-04-29