題目描述:
給定兩個字串 a 和 b, 尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 -1。
舉個例子,a = 「abcd」,b = 「cdabcdab」。
答案為 3, 因為 a 重複疊加三遍後為 「abcdabcdabcd」,此時 b 是其子串;a 重複疊加兩遍後為"abcdabcd",b 並不是其子串。
注意:
a 與 b 字串的長度在1和10000區間範圍內。
方法1:
主要思路:
(1)注意,若是字串 b 在字串 a 的重複組合中,則字串 b 若是 a 的重複組合的子串:
(a)剛好整數倍個a組成b;
(b)在b的長度基礎上,加上乙個a;
(c)在b的長度基礎上,加上兩個a;
(2)故使用a組成的組合最長為b.size()+2*a.size();此為終止條件,使用find函式在組合中找到b;find的返回值,要不是-1,既沒有找到,要不是找到的位置;
class
solution
++count;
//否則,數量加一,接著增長
str+
=a;}
return-1
;//跳出迴圈,既沒找到}}
;
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 ...
LeetCode 686 重複疊加字串匹配
給定兩個字串 a 和 b,尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 1。舉個例子,a abcd b cdabcdab 答案為 3,因為 a 重複疊加三遍後為 abcdabcdabcd 此時 b 是其子串 a 重複疊加兩遍後為 abcdabcd b 並不是其子...