Leet686 重複疊加字串匹配(python)

2021-08-20 02:47:52 字數 772 閱讀 5388

題目描述:

給定兩個字串 a 和 b, 尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 -1。

舉個例子,a = "abcd",b = "cdabcdab"。

答案為 3, 因為 a 重複疊加三遍後為 「abcdabcdabcd」,此時 b 是其子串;a 重複疊加兩遍後為"abcdabcd",b 並不是其子串。

注意:

ab字串的長度在1和10000區間範圍內。

**:

class solution:

def repeatedstringmatch(self, a, b):

""":type a: str

:type b: str

:rtype: int

"""if(a.count(b)>=1):

return 1

if(set(a)!=set(b)):

return -1

i=int(len(b)/len(a))

while(1):

c=a*i

if(c.count(b)>0):

return i

if(len(c)>2*len(b)):

return -1

i+=1

總結:

加入如下判斷語句可使執行時間大大縮短

if(set(a)!=set(b)):

686 重複疊加字串匹配

題目描述 給定兩個字串 a 和 b,尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 1。舉個例子,a abcd b cdabcdab 答案為 3,因為 a 重複疊加三遍後為 abcdabcdabcd 此時 b 是其子串 a 重複疊加兩遍後為 abcdabcd b ...

LeetCode 686 重複疊加字串匹配

給定兩個字串 a 和 b,尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 1。舉個例子,a abcd b cdabcdab 答案為 3,因為 a 重複疊加三遍後為 abcdabcdabcd 此時 b 是其子串 a 重複疊加兩遍後為 abcdabcd b 並不是其子...

LeetCode 686 重複疊加字串匹配

題目描述 給定兩個字串 a 和 b,尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 1。舉個例子,a abcd b cdabcdab 答案為 3,因為 a 重複疊加三遍後為 abcdabcdabcd 此時 b 是其子串 a 重複疊加兩遍後為 abcdabcd b ...