給定兩個字串 a 和 b, 尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 -1。
舉個例子,a = 「abcd」,b = 「cdabcdab」。
答案為 3, 因為 a 重複疊加三遍後為 「abcdabcdabcd」,此時 b 是其子串;a 重複疊加兩遍後為"abcdabcd",b 並不是其子串。
注意:
a
與b
字串的長度在1和10000區間範圍內。
解答:
生成a字串的一次重複、兩次重複……,直到出現b字串為止。
最大迴圈次數為a字串的n+2倍,即首位兩次不完全重複+n次完全重複。當超出迴圈限制後,返回-1表示未找到。
實際只有a的重複字串長度大於b的字串長度時,才可能出現b子字串;所以應該生成長度大於b的字串長度的字串後再進行子串判斷。
但是我沒懶得寫了。
class
solution
c.(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 並不是其子...
686 重複疊加字串匹配
題目描述 給定兩個字串 a 和 b,尋找重複疊加字串a的最小次數,使得字串b成為疊加後的字串a的子串,如果不存在則返回 1。舉個例子,a abcd b cdabcdab 答案為 3,因為 a 重複疊加三遍後為 abcdabcdabcd 此時 b 是其子串 a 重複疊加兩遍後為 abcdabcd b ...