• 1227. 重复的子串模式


    1227. 重复的子串模式

    中文English

    给你一个非空字符串,判断它能否通过重复它的某一个子串若干次(两次及以上)得到。字符串由小写字母组成,并且它的长度不会超过10000。

    样例

    样例1:

    输入:"abab"
    
    输出:True
    
    说明:可以由它的子串"ab"重复两次得到。
    

    样例2:

    输入:"aba"
    
    输出:False
    

    样例3:

    输入:"abcabcabcabc"
    
    输出:True
    
    说明:可以由它的子串"abc"重复四次得到(同时也可以是"abcabc"重复两次)。
    class Solution:
        """
        @param s: a string
        @return: return a boolean
        """
        '''
        大致思路:
        1.初始化值a = s[:len(s)//2],while true,内层循环i=2,if i*a == s,返回True,否则返回False
        '''
        def repeatedSubstringPattern(self,s):
            a,l = s[:len(s)//2],len(s[:len(s)//2])+1
        
            while True:
                a = a[:l]
                if len(a) == 0:
                    return False
                
                time = len(s)//len(a)
                if time >= 2:
                    for i in range(1,time+1):
                        if i*a == s:
                            return True
                l = l-1
            return False
    第二种方式:O(n)时间复杂度:

    class Solution:
        '''
        大致思路:
        1.while True,初始化l = len(s)//2,如果len(s) % l == 0,a=s[:l],l -= 1判断(len(s) // l *a) * a == s,返回true,最终l如果等于0的话,则返回False
        '''
        def  repeatedSubstringPattern(self,s):
            l = len(s)//2 
            while True:
                if l == 0:
                    return False
                a = s[:l]
                if len(s) % l == 0:
                    b = len(s) // l
                    if b*a == s:
                        return True
                l -= 1
     
  • 相关阅读:
    nginx 配置文件配置
    源码编译php5.4 ./configure参数
    腾讯云Linux VPS新硬盘分区与挂载教程(面板重装不丢失数据)
    十行代码带你量化交易入门
    谱聚类(转)
    随机模拟(MCMC)
    LDA 线性判别分析
    Windows10上安装Keras 和 TensorFlow-GPU
    ASCII 码
    KL距离,Kullback-Leibler Divergence
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12731755.html
Copyright © 2020-2023  润新知