力扣每日一题(十六)
作者:互联网
仅以此纪录每日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