首页 > 其他 > 详细

1227. 重复的子串模式

时间:2020-04-19 15:47:54      阅读:57      评论:0      收藏:0      [点我收藏+]

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
 

1227. 重复的子串模式

原文:https://www.cnblogs.com/yunxintryyoubest/p/12731755.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!