letecode [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 10000.

Example 1:

Input: "abab"
Output: True
Explanation: It‘s the substring "ab" twice.

Example 2:

Input: "aba"
Output: False

Example 3:

Input: "abcabcabcabc"
Output: True
Explanation: It‘s the substring "abc" four times. (And the substring "abcabc" twice.)

题目大意

  给定一个非空字符串,判断它是否能由它的某个子串重复多次构成。

理  解:

  根据数学定义f(x+t) = f(x),遍历找到符合条件的周期t。

代 码 C++:

class Solution {
public:
    bool repeatedSubstringPattern(string s) {
        // 判断周期t是否存在
        int t=1,len,i;
        len = s.length();
        for(;t<=len/2;++t){
            if(len%t) continue;
            // 从第2个周期起均与第一个周期值比较
            for(i=t;i<len;++i){
                if(s[i]!=s[i%t])
                    break;
            }
            if(i==len)
                return true;
        }
        return false;
    }
};

运行结果:

  执行用时 :40 ms, 在所有 C++ 提交中击败了80.82%的用户

  内存消耗 :11.6 MB, 在所有 C++ 提交中击败了93.22%的用户

原文地址:https://www.cnblogs.com/lpomeloz/p/11113482.html

时间: 2024-10-11 07:58:37

letecode [459] - Repeated Substring Pattern的相关文章

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

459. Repeated Substring Pattern

https://leetcode.com/problems/repeated-substring-pattern/#/description 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 consis

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]

【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 459. 重复的子字符串(Repeated Substring Pattern)

459. 重复的子字符串 459. Repeated Substring Pattern 题目描述 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过 10000. LeetCode459. Repeated Substring Pattern 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成. 示例 2: 输入: "aba" 输出: Fa

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] 所以求解很简单:先对

[LeetCode] 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