求周期字符串的最小子串
示例:输入abcabcabc,此时最小的子串是abc,长度为3,输出3.
直接给出代码进行讲解
import java.util.Scanner;
public class minstring {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);String content=in.next();int length=content.length();boolean judge=false;//字符串转换为字符数组char[] test=content.toCharArray();for(int i=1;i<length;i++) {int ok=1;for(int j=i;j<length;j++) {if(test[j]!=test[j%i]) {ok=0;break;}}if(ok==1) { System.out.println(i); judge=true;break;}}if(!judge) {System.out.println(length);}}}
思考:因为要求出最小的子串,那么最小就可能是1,然后再逐渐增大测试。由此考虑使用一个变量来记录字串长度(即代码中的i从1测试到length-1)。
然后对代码块关于j的for循环原理:
for(int j=i;j<length;j++) {if(test[j]!=test[j%i]) {ok=0;break;}}
用上面数组[a,b,c,a,b,c,a,b,c]来讲解:
j%i的目的在于使得始终在子串长度0-i-1进行遍历
[a(0), b(1), c(2)
a(3,3%3=0),b(4,4%3=1),c(5,5%3=2)
a(6,6%3=0),b(7,7%3=1),c(8,8%3=2)]
当i=1时相当于此时考虑子串是[a]。循环j=1,j%i=0,test[1]!=test[0]成立,则不正确。
i=2同理
i=3时,考虑子串是[a,b,c].循环j=3,j%3=0,test[3]=test[0];j=4,j%3=1,test[4]=test[1]…j=8,test[8]=test[2]此时遍历完了字符串,所以最小子串是[a,b,c]
求周期字符串的最小子串相关推荐
- 求取字符串的最大子串
子串定义:将给定的字符串去除任意个字符后,例如acb的子串有a.b.c.ab.ac.cb.acb. 子串大小:按照英文字母表的顺序进行排序,如acb的最大子串为cb. 代码如下: -- 求取字符串的最 ...
- 周期字符串的最小周期
题目描述 右右喜欢听故事,但是右右的妈妈总是讲一些"从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山--"这样循环的故事来搪塞右右. 我们定义,如果一个 ...
- 求一个字符串中连续出现的次数最多的子串
求一个字符串中连续出现的次数最多的子串.例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复 ...
- 求一个字符串中连续出现次数最多的子串
http://blog.csdn.net/imcdragon/article/details/6838565解答二 http://hi.baidu.com/icyday315/item/040aada ...
- 【字符串问题】求一个字符串中重复出现的最长的子串
2013-09-14 15:34:16 用后缀数组求一个字符串中重复出现的最长的子串. 用C++中的string类可以很方便地进行操作,需将后缀数组保存在vector<string>,如下 ...
- 字符串处理 —— 回文串相关 —— 求最长回文子串
[暴力枚举] 求最长回文串最容易的方法就是暴力枚举,求出字符串的每一个子串,然后判断是不是回文,找到最长的那个回文串 求每一个子串的时间复杂度为 O(N^2),判断一个子串是不是回文时间复杂度为 O( ...
- 【算法题】求一个字符串的最长不重复子串
[题目描述] 求一个字符串的最长不重复子串.比如:给定"abcabcbb"的答案是"abc",长度是3:给定"bbbbb"的答案是" ...
- 最大子串和与最小子串和
做了牛客哈理工的一套训练赛的题目,真的是知识欠缺严重啊,首先补一下这个最大和最小子串和的问题. 求一个数组中连续一段和的最大值和最小值问题 最大值函数代码 ll maxsum() //最大和 {ll ...
- 寻找一个字符串的重复子串 后缀数组
什么是后缀数组 令字符串 S=S[1]S[2]...S[n]S=S[1]S[2]...S[n]{\displaystyle S=S[1]S[2]...S[n]} , S[i,j]S[i,j]{\dis ...
最新文章
- CAS增加免登陆(Remember Me)功能
- html怎么建边框,如何使用CSS创建多色边框?
- mysql 按照in id顺序_Mysql查询结果顺序按in()中ID的顺序排列的案例区分
- SAP UI5 global configuration interface
- 什么是HOOK功能?
- 电脑的服务器操作系统是什么,电脑的服务器操作系统是什么
- 工程与ArcGIS api for javascript不在同一个tomcat情况下跨域问题
- 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
- 贪心科技机器学习训练营(五)
- windows7 使用激活工具激活系统出现的问题汇总
- 猫、路由器、交换机的区别
- 计算机中及格人数怎么算,在excel中如何计算及格率和优秀率及统计各分数段人数...
- 蓝牙耳机按键事件linux,【记录】Android监听蓝牙耳机的按键事件
- 电动汽车换电池要多少钱?各品牌电池更换费用大起底!
- 千耘导航助力新疆精河县数万亩棉花播种
- Java Security:Java加密框架(JCA)简要说明
- 时间序列预测11:用电量预测 01 数据分析与建模
- 序列密码知识整理(四 典型序列密码算法A5,RC4)
- 硅步机器人-Shadow先进仿人灵巧手
- TP5后端,VUE前端请求聚合数据成语大全
热门文章
- Java笔记-Java中桥接模式
- Qt工作笔记-WebEngineView调用web站点中的JS脚本(含Vue Cli脚本)
- Arduino笔记-Arduino UNO与WeMos D1串口通信(数据交互)
- Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
- Spring Boot笔记-jQuery使用load进行异步调用
- Spring Boot中实现简单表单提交(登录功能)
- 系统架构师学习笔记-软件架构设计
- 软件设计师习题笔记-重点习题五
- linux losetup命令,losetup命令_Linux losetup 命令用法详解:设定与控制循环(loop)设备...
- linux下cabal安装教程,Centos 7 安装shellcheck