其他分享
首页 > 其他分享> > 力扣每日一题(十六)

力扣每日一题(十六)

作者:互联网

仅以此纪录每日LootCode所刷题目

题目描述:

示例:

 

思路:

这道题我首先排除特殊情况,当b中的任意字符在a中不存在的时候,无论如何迭代a都不可能得出结果。因此遇到这种情况我们直接返回-1。之后我们就可以正常的循环迭代进行判断了。唯一需要注意的点就是循环的终止条件是二倍的a长度加上b长度。下面我们来解释一下为什么是这个长度,首先作为循环的终止条件,我们应该尽可能的取大的值,但是在考虑时间复杂度和空间复杂度的情况下,我们能考虑的极限值就是b串的开头用到a串的一部分,b串的结尾用到a串的一部分,b串的中间部分也和a串有关,因此循环终止条件为:

if len(c) <= len(b)+2*len(a)

代码:

class Solution:
    def repeatedStringMatch(self, a: str, b: str) -> int:
        for i in range(len(b)):
            if b[i] not in a:
                return -1
        count = 0
        c = ''
        while True:
            if len(c) <= len(b)+2*len(a):
                c = c + a
                count += 1
                if b in c:
                    return count
            else:
                return -1

标签:迭代,每日,十六,len,力扣,循环,str,终止,复杂度
来源: https://blog.csdn.net/touxing777/article/details/122082895