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

KMP-重复子字符串

Problem: 459. 重复的子字符串

文章目录

  • 题目
  • 思路
  • 复杂度
  • Code

题目

给定一个字符串str1, 判断其是否由重复的子串构成。

例子1:输入 str1=‘ababab’ ;输出 true
例子2:输入 str1=‘ababac’ ;输出 false

思路

重复子字符串组成的字符串,其肯定存在一个后缀和前缀是一样的,并且这个后缀其由后缀前面的字符子串组成。所以可以用前缀数组,先找到每个位置的最长相等前缀后缀,若最后一个字符的最长相等前缀后缀值不为零且最长后缀前的字符串长度被原字符串长度整除,那代表该最长后缀就是由前面的字符子串组成,即原字符串也由前面的字符子串组成。

复杂度

时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( n ) O(n) O(n)

Code

class Solution:def repeatedSubstringPattern(self, s: str) -> bool:def get_next(str1):n = len(str1)pres = [-1] * (n +1)for i in range(n):t = pres[i]while str1[i] != str1[t] and t!=-1:t = pres[t]pres[i+1] = t + 1 return pres[1:]pres = get_next(s)if pres[-1] and len(s) % (len(s)-pres[-1])==0:return Truereturn False
http://www.lryc.cn/news/286579.html

相关文章:

  • 如何使用Markdown生成目录索引
  • R语言【taxa】——as_taxon():转换为 taxon 对象
  • Android状态栏布局隐藏的方法
  • idea创建公用依赖包项目
  • 设计模式之装饰器模式
  • 【Java万花筒】缓存与存储:Java应用中的数据处理利器
  • 解决nodejs报错内存泄漏问题,项目无法运行
  • 计算机网络-物理层基本概念(接口特性 相关概念)
  • 从规则到神经网络:机器翻译技术的演化之路
  • python 面经
  • Ubuntu (Linux) 下创建软链接(即符号链接,相当于windows下的快捷方式)方法
  • LeetCode.2765. 最长交替子数组
  • Springboot日志框架logback与log4j2
  • 浪花 - 用户信息展示+更新
  • xxe漏洞之scms靶场漏洞
  • Unity3d C#实现三维场景中图标根据相机距离动态缩放功能
  • Linux网络编程(二-套接字)
  • 【DeepLearning-1】 注意力机制(Attention Mechanism)
  • c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)
  • HuoCMS|免费开源可商用CMS建站系统HuoCMS 2.0下载(thinkphp内核)
  • VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记
  • HackTheBox - Medium - Linux - Ransom
  • 柠檬微趣面试准备
  • uniapp嵌套webview,无法返回上一级?
  • 【优先级队列 之 堆的实现】
  • Vue中$watch()方法和watch属性的区别
  • openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert
  • 小程序商城能不能自己开发?
  • GPTBots:利用FlowBot中的卡片和表单信息,提供丰富的客服体验
  • ERC20 解读