LeetCode 459. 重复的子字符串(Repeated Substring Pattern)

459. 重复的子字符串
459. Repeated Substring Pattern

题目描述
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过 10000。

LeetCode459. Repeated Substring Pattern

示例 1:

输入: "abab"
输出: True
解释: 可由子字符串 "ab" 重复两次构成。

示例 2:

输入: "aba"
输出: False

示例 3:

输入: "abcabcabcabc"
输出: True
解释: 可由子字符串 "abc" 重复四次构成。(或者子字符串 "abcabc" 重复两次构成。)

Java 实现

class Solution {
    public boolean repeatedSubstringPattern1(String s) {
        int n = s.length();
        for (int i = n / 2; i > 0; i--) {
            if (n % i == 0) {
                boolean flag = true;
                for (int j = n / i; j > 1; j--) {
                    if (!s.substring(0, i).equals(s.substring(i * (j - 1), i * j))) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    return true;
                }
            }
        }
        return false;
    }

    public boolean repeatedSubstringPattern2(String s) {
        String str = s + s;
        return str.substring(1, str.length() - 1).contains(s);
    }
}

相似题目

  • 28. 实现strStr()
  • 686. 重复叠加字符串匹配

参考资料

原文地址:https://www.cnblogs.com/hglibin/p/10923510.html

时间: 2024-10-03 00:44:22

LeetCode 459. 重复的子字符串(Repeated Substring Pattern)的相关文章

[Swift]LeetCode459. 重复的子字符串 | Repeated Substring Pattern

Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only and its length will not exceed 100

Leetcode 459.重复的子字符串

重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成. 示例 2: 输入: "aba" 输出: False 示例 3: 输入: "abcabcabcabc" 输出: True 解释: 可由子字符串 "abc" 重复四次构成.

leetcode——459. 重复的子字符串

简单题,效果不够好 class Solution: def repeatedSubstringPattern(self, s: str) -> bool: a='' for i in range(len(s)): if s[i] not in a: a+=s[i] else: if a == s[i:i+len(a)]: if s==a*(len(s)//len(a)): return True else: a+=s[i] else: a+=s[i] return False 执行用时 :184

43. leetcode 459. Repeated Substring Pattern

459. Repeated Substring Pattern Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only an

459. Repeated Substring Pattern【easy】

459. Repeated Substring Pattern[easy] Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters o

【LeetCode】459. Repeated Substring Pattern

Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring together. You may assume the given string consists of lowercase English letters only and its length will not exceed 100

【leetcode 简单】 第一百一十二题 重复的子字符串

给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成. 示例 2: 输入: "aba" 输出: False 示例 3: 输入: "abcabcabcabc" 输出: True 解释: 可由子字符串 "abc" 重复四次构成. (或者子字符串

459.(KMP)求字符串是否由模式重复构成 Repeated Substring Pattern

假设str长度为len,重复的子串长度为k,则如果真的由连续多个长度为k的子串重复构成str,那么在对str求next时,由于连续对称性(如图,前后两个虚线框内字符串相等),会从next[k+1]开始,1,2,3...地递增,直到next[len]=len-k,且(len-k)%k==0,表示有整数个k 要一直求到next[len]而不是next[len-1],是因为next[len-1]只是表示前len-1个字母的内部对称性,而没有考虑到最后一个字母即str[len-1] 所以求解很简单:先对

KMP - LeetCode #459 Repeated Substring Pattern

复习一下KMP算法 KMP的主要思想是利用字符串自身的前缀后缀的对称性,来构建next数组,从而实现用接近O(N)的时间复杂度完成字符串的匹配 对于一个字符串str,next[j] = k 表示满足str[0...k-1] = str[j-k...j-1]的最大的k,即对于子串str[0...j-1],前k个字母等于后k个字母 现在求解str的next数组: 初始化:next[0] = -1 那么在知道了next[j]的情况下,如何递推地求出next[j+1]呢?分两种情况(令k=next[j]