686 重複疊加字串匹配

2021-10-08 06:55:40 字數 716 閱讀 1725

題目描述:

給定兩個字串 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 並不是其子...