題目描述:
給定兩個字串 a 和 b, 尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 -1。
舉個例子,a = "abcd",b = "cdabcdab"。
答案為 3, 因為 a 重複疊加三遍後為 「abcdabcdabcd」,此時 b 是其子串;a 重複疊加兩遍後為"abcdabcd",b 並不是其子串。
注意:
a
與b
字串的長度在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 ...