给定两个字符串 a 和 b,寻找重复叠加字符串 a 的最小次数,使得字符串 b 成为叠加后的字符串 a 的子串,如果不存在则返回 -1。
注意:字符串 "abc" 重复叠加 0 次是 "",重复叠加 1 次是 "abc",重复叠加 2 次是 "abcabc"。
这里有个小的隐藏问题,就是怎么判断a叠加以后里面包含着b,不过这也挺简单的,利用集合做并集就行,直接看代码
class Solution:
def repeatedStringMatch(self, a: str, b: str) -> int:
count = 1
d = a
set_a = set(a)
set_b = set(b)
if set_a|set_b == set_a:
for i in range(len(b)):
if b not in d:
d+=a
count+=1
else:
return count
break
else:
return -1
else:
return -1