首页 > 其他分享 >2024/12/17 【字符串】LeetCode 459.重复的子字符串 【❌】

2024/12/17 【字符串】LeetCode 459.重复的子字符串 【❌】

时间:2024-12-28 21:08:47浏览次数:3  
标签:459 12 return self len next 字符串 def

https://programmercarl.com/0459.%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E6%80%9D%E8%B7%AF

https://leetcode.cn/problems/repeated-substring-pattern/

子串结束位置大于中间位置的话,一定不能重复组成字符串。

如果 next[len - 1] != -1,则说明字符串有最长相同的前后缀(就是字符串里的前缀子串和后缀子串相同的最长长度,这里的next数组是以统一减一的方式计算的)

解法一:KMP算法的next数组(不减一)

具体的分析过程见链接2

class Solution:
    def getNext(self, next, s):
        j = 0
        for i in range(1, len(s)):
            while j > 0 and s[i] != s[j]:
                j = next[j-1]
            if s[i] == s[j]:
                j += 1
            next[i] = j

    def repeatedSubstringPattern(self, s: str) -> bool:
        n = len(s)
        next = [0]*n
        self.getNext(next, s)
        if next[n-1] != 0 and n % (n-next[n-1]) == 0:
            return True
        return False

解法2:KMP,next数组,减一

 

解法3:移动匹配(方法思路见代码随想录)使用find函数

class Solution:
    def repeatedSubstringPattern(self, s: str) -> bool:
        ss = s[1:]+s[:-1]
        print(ss)
        return ss.find(s) != -1

解法4:暴力法

class Solution:
    def repeatedSubstringPattern(self, s: str) -> bool:
        substr = ""
        n = len(s)
        for i in range(1, n//2+1):
            if n % i == 0:
                substr = s[:i]
                if substr*(n//i) == s:
                    return True
        return False

 

标签:459,12,return,self,len,next,字符串,def
From: https://www.cnblogs.com/spp20/p/18637949

相关文章

  • leetcode 2466. 统计构造好字符串的方案数
    2466.统计构造好字符串的方案数没写出来......
  • 2024-12-28:求出出现两次数字的 XOR 值。用go语言,给定一个数组 nums,其中的数字出现的频
    2024-12-28:求出出现两次数字的XOR值。用go语言,给定一个数组nums,其中的数字出现的频率要么是一次,要么是两次。请找出所有出现两次的数字,并计算它们的按位XOR值。如果没有数字出现两次,则返回0。1<=nums.length<=50。1<=nums[i]<=50。nums中每个数字要么出现过一......
  • 202412 电子学会 图形化编程 一级真题
    2024年12月Scratch图形化编程等级考试一级真题试卷题目总数:37  总分数:100选择题第1题  单选题点击下列哪个按钮,可以将红框处的Scratch程序放大?( )A.B.C.D.第2题  单选题下列哪个按钮可以让scratch舞台区变为小舞台模式?( )A.B.C.D.......
  • [4426] 12 打包提效:如何为 Webpack 打包阶段提速?
    上节课我们聊了Webpack构建流程中第一阶段,也就是编译模块阶段的提效方案,这些方案可以归为三个不同的优化方向。不知道大家课后有没有对照分析自己在项目里用到了其中的哪些方案呢?今天我们就来继续聊聊Webpack构建流程中的第二个阶段,也就是从代码优化到生成产物阶段的效率提升......
  • 学习012-02-03-14 How to: Reorder an Action Container‘s Actions Collection(如何:对
    Howto:ReorderanActionContainer’sActionsCollection(如何:对操作容器的操作集合进行重新排序)InanXAFapplicationUI,ActionsarelocatedwithinActionContainers.YoucanusetheActionBase.CategorypropertyandtheApplicationModel’sActionDesign......
  • c语言书籍排序 多数组协同排序 按价格排序【书名同步】 带有空格的字符串读取
    题目:编写程序,从键盘输入n(n<10)本书的名称和定价并存入结构数组中,按单价从小到大排序并输出排序后的书籍信息。输入输出示例:括号内为说明,无需输入输出输入样例:3(n=3)ProgramminginC21.5ProgramminginVB18.5ProgramminginDelphi20输出样例:Programmingin......
  • Bootstrap模态框使用WebUploader点击失效问题 - Bootstrao模态框弹出后内置js函数未起
    解决方案参考: https://blog.csdn.net/superdog007/article/details/78716352webuploader官网: https://fex-team.github.io/webuploader/getting-started.html 问题原因: 模态框弹出后,但是加载的js函数并未执行到html元素,但是F12页面查看元素后又显示正常, 解决: 在模态......
  • 字符串
    border理论先给出一些定义,方便理解下文。\(\textbf{\large{周期}:}\)若\(\foralli\in\left[1,|S|-p\right]\),都有\(S_i=S_{i+p}\),则称\(p\)是\(S\)的一个周期。\(\textbf{border:}\)若\(S_{\left[1,p\right]}=S_{\left[|S|-p+1,\right|S|]}\),则称\(S_{\......
  • 12.28 CW 模拟赛 赛时记录
    前言还是只管考试的策略,别想其他的每个题控制用时,根据时间选择策略,冷静看题完蛋了是\(\rm{NOIP}\),我们没救了\(\rm{T1}\)怎么办,像是很典的题但是我多半做不出来别人做过容斥的肯定会,但是我就不一样了\(\rm{T2}\)好像也不会做\(\rm{T3}\)基环树上的\(\rm......
  • 2024.12.28模拟赛
    耳机没电了14:46耳机彻底没电了,可是我明明记得早上充了电的这应该是今年最后一次模拟赛了打了T1正解、T225分暴力与T410分暴力,实际T2挂了15分,总分115,排名第六现在也不知道暴力是怎么WA掉的今日作业T1【签到题】题目大意:给出一个长度为\(n\)的序列\(a_{i}\),要求......