首页 > 其他分享 >LeetCode 459. 重复的子字符串

LeetCode 459. 重复的子字符串

时间:2023-05-10 18:23:37浏览次数:41  
标签:459 重复 next kmp 字符串 LeetCode

题目链接:LeetCode 459. 重复的子字符串

题意:

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

解题思路:

本题就是kmp算法的经典应用,n - next[n] 是原字符串的最小周期

完整代码如下:

func repeatedSubstringPattern(s string) bool {
    // kmp的经典应用:求字符串的周期
    
    //求next数组
      m:=len(s)
      s=" "+s
     next:=make([]int,m+1)
      for i,j:=2,0;i<=m;i++{
          for j>0 && s[i] !=s[j+1]{
              j=next[j]
          }
          if s[i]==s[j+1]{
              j++
          }
          next[i] = j
      }
      t:=m-next[m]   //周期
      return t<m && m%t==0
}

标签:459,重复,next,kmp,字符串,LeetCode
From: https://www.cnblogs.com/lxing-go/p/17388884.html

相关文章

  • LeetCode 151. 反转字符串中的单词
    题目链接:LeetCode151.反转字符串中的单词题意:给你一个字符串s,请你反转字符串中单词的顺序。解题思路:如果我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。所以解题思路如下:移除多余空格将整个字......
  • AcWing 778. 字符串最大跨距
    AcWing778.字符串最大跨距1.地址https://www.acwing.com/problem/content/description/780/2.题解#include<iostream>#include<cstdio>usingnamespacestd;//从左往右找intfind_str_left(strings,strings1){for(inti=0;i+s1.size()<=s.size();i+......
  • python 字符串格式化
    Python中的字符串格式化是一种将变量插入到字符串中的方法,可以通过占位符或者字符串模板来实现。字符串格式化不仅能够让代码更加简洁清晰,还能够避免手动拼接字符串带来的繁琐和出错风险。下面举例说明Python中的字符串格式化:使用占位符#使用%占位符进行字符串格式化name=......
  • LeetCode 541. 反转字符串 II
    题目链接:LeetCode541.反转字符串II题意:给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余字符保持原样。......
  • LeetCode 剑指 Offer 05. 替换空格
    题目链接:LeetCode剑指Offer05.替换空格题意:输入一个字符串s,然后将s中的每个空格替换成"%20"。解题思路:直接遍历一遍字符串,如果当前字符不是空格,则加入到结果中如果是空格,则将“%20”加入到结果集完整代码如下:funcreplaceSpace(sstring)string{varres......
  • Java判断一个字符串是否是url
    Java判断一个字符串是否是url方法一正则表达式importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassURLValidator{privatestaticfinalPatternURL_PATTERN=Pattern.compile("^((https?|ftp|file)://)?"+"([\\w......
  • LeetCode 344. 反转字符串
    题目链接:LeetCode344.反转字符串题意:输入一个字符串,将其在原地进行反转。解题思路:对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。完整代码如下:funcreverseString(s[]byte){//原地反转字符......
  • leetcode bash题--统计词频
    写一个bash脚本以统计一个文本文件words.txt中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和''。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。示例:假设words.txt内容如下:thedayissunnythethethesunnyisis你的脚......
  • 算法学习day09字符串part02-28、459--待办
    packageLeetCode.stringpart02;/***28.找出字符串中第一个匹配项的下标*给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串的第一个匹配项的下标(下标从0开始)。*如果needle不是haystack的一部分,则返回-1。*实例:*输入:hayst......
  • python中以空格将字符串拆分为两部分
      001、>>>importre>>>tmp=re.match(r'^([^\s]+)\s(.*)',"abcd")>>>tmp<re.Matchobject;span=(0,5),match='abcd'>>>>tmp.group(1)'ab'>>>tmp.group......