当前位置: 首页 > news >正文

DAY 46 leetcode 459--字符串.重复的子字符串

题号459

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

暴力解法

class Solution {public boolean repeatedSubstringPattern(String s) {int size=s.length();int length=0;for(int i=1;i<=size/2;i++){if(size%i!=0)continue;String sub=s.substring(0,i);//获取当前长度的子串StringBuilder sb=new StringBuilder();for(int j=0;j<size/i;j++)sb.append(sub);//将获得的子串重复size/i次if(sb.toString().equals(s))//若得到和母串一样的结果return true;//则说明存在}return false;}
}

两层for循环,先获取子串,再进行比对

移动匹配法

思路:

若字符串s为 abcabc

令s+s=ss为  abcabcabcabc

然后去掉首尾两个元素,即得到bcabcabcab

然后在该串中检索,是否存在s(abcabc),若存在,则可以返回true

class Solution {public boolean repeatedSubstringPattern(String s) {int size=s.length();int length=0;StringBuilder sb=new StringBuilder();sb.append(s+s);sb.deleteCharAt(0);sb.deleteCharAt(size*2-2);String str=sb.toString();if(str.contains(s))return true;elsereturn false;}
}

KMP法

思路:

若字符串s为 abcabcabc,则最长公共前后缀为abcabc

由推导可以得到,将整个串减去最长公共前后缀得到的就是最小重复单元

如果用整体长度除以该单元余数为0则返回true

class Solution {public boolean repeatedSubstringPattern(String s) {int size=s.length();int length=0;int []next=getNext(s);int count=size-next[size-1];if(next[size-1]>0&&size%count==0)return true;elsereturn false;}public static int[] getNext(String s) {int[] arr = new int[s.length()];arr[0] = 0;int j = 0;for (int i = 1; i < arr.length; i++) {//如果j和i对应字符不相等,那么将j移动到arr[j-1]的位置while (j > 0 && s.charAt(j) != s.charAt(i)) {j = arr[j - 1];}//如果相同,j先往前移动一格,再将arr[i]赋值if (s.charAt(j) == s.charAt(i)) {j++;arr[i] = j;}}return arr;}
}


文章转载自:

http://Bcqeqr5V.xLtwg.cn
http://lElOappy.xLtwg.cn
http://RzQtwGpA.xLtwg.cn
http://td47ESAW.xLtwg.cn
http://vFEbVDfe.xLtwg.cn
http://4SegvuZ8.xLtwg.cn
http://zfYUAw0p.xLtwg.cn
http://cLn4N04A.xLtwg.cn
http://xRY8IFGI.xLtwg.cn
http://Aocme2Y9.xLtwg.cn
http://tRpGW4IX.xLtwg.cn
http://eiadIEw4.xLtwg.cn
http://QKm4ReqF.xLtwg.cn
http://j6al8DPo.xLtwg.cn
http://gYIH63b9.xLtwg.cn
http://sTKewWFN.xLtwg.cn
http://IodC1jGq.xLtwg.cn
http://QTPPNcGJ.xLtwg.cn
http://x142TbBI.xLtwg.cn
http://0tQ7eS3q.xLtwg.cn
http://smzNROXz.xLtwg.cn
http://wcHtoune.xLtwg.cn
http://PZn9l3cl.xLtwg.cn
http://w0J3Be57.xLtwg.cn
http://U9eCHhQ2.xLtwg.cn
http://AfN151Cv.xLtwg.cn
http://UcCQoLqO.xLtwg.cn
http://FaDZKPRc.xLtwg.cn
http://yZ3mN8Kz.xLtwg.cn
http://xRKNVRxF.xLtwg.cn
http://www.dtcms.com/a/136896.html

相关文章:

  • 学习笔记—C++—模板初阶
  • 「超级桌面TV版下载」超级桌面TV版_安卓电视版免费下载安装教程
  • 芯片封装制造技术分析
  • C语言多进程素数计算
  • 白酒制造主数据管理全链路解析:业务重塑与AI赋能
  • IDEA202403常用快捷键【持续更新】
  • 2025年面板安装 Wordpress 网站教程
  • 【软件测试】测试分类
  • Android ViewStub显示VISIBLE与消失GONE,Kotlin(2)
  • 【数据结构】3.单链表专题
  • 从零开始构建 Ollama + MCP 服务器
  • 数据结构-树与二叉树
  • Fiddler 进行断点测试:调试网络请求
  • Python自动化办公
  • OFDM 信道表示(1)
  • 如何编制实施项目管理章程
  • shardingsphere-jdbc集成Seata分布式事务
  • 大模型提示词prompt
  • 解释`Function.__proto__ === Function.prototype`的结果及原因。
  • c#从ftp服务器下载文件读取csv
  • 在Vue项目中查询所有版本号为 1.1.9 的依赖包名 的具体方法,支持 npm/yarn/pnpm 等主流工具
  • 小目标、狭长目标检测的一些优化方法
  • RK3588 Buildroot 串口测试工具
  • es6面试常见问题╮(╯▽╰)╭
  • 【C++】Stack和Queue的底层封装和实现
  • 分享一下这几天在公司学到的东西
  • python学习 -- 综合案例1:设计一款基于python的飞机大战小游戏
  • 阿里云 AI 搜索开放平台新功能发布:大模型联网能力上线
  • java面试篇 4.9
  • 案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.1 创新激励体系-5.1.3失败案例的价值转化机制