蓝桥杯 ADV-150 周期字符串(字符串处理)(java)
发布日期:2021-06-28 15:58:18
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月21日 05时22分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(split盲点)javascript如何判断字符串中某个特定字符的个数
2019-04-29
axios请求头踩坑日记之-application/json
2019-04-29
vue-封装axios的GET请求
2019-04-29
javascript获取当前时间时间戳的几种方法
2019-04-29
微信小程序App()的作用与getApp()方法
2019-04-29
快速新建新建Vue项目(详细)
2019-04-29
vue项目启动自动开启浏览器
2019-04-29
Vue中 @表示的路径
2019-04-29
Vue实现简单路由跳转
2019-04-29
动态表格
2019-04-29
Mock 造假数据
2019-04-29
HTML5中哪些标签可以用来做SEO优化
2019-04-29
git 命令
2019-04-29
eslint
2019-04-29
js 深拷贝封装
2019-04-29
使用 keep-alive 需要判断路由from 走active
2019-04-29
elementui 表格上加小问号 鼠标移入提示文字
2019-04-29
linux操作swap文件
2019-04-29
node同步异步读取文件
2019-04-29
node异步操作与闭包函数
2019-04-29