1. 程式人生 > >686. 重複疊加字串匹配

686. 重複疊加字串匹配

686.重複疊加字串匹配

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

舉個例子,A = “abcd”,B = “cdabcdab”。

答案為 3, 因為 A 重複疊加三遍後為 “abcdabcdabcd”,此時 B 是其子串;A 重複疊加兩遍後為"abcdabcd",B 並不是其子串。

注意:

A 與 B 字串的長度在1和10000區間範圍內。

分析: 分析可知,A最多重複Blen/Alen+2遍就能包含B,因此只要逐漸重複A,並從中找B即可。

class Solution {
public:
    int repeatedStringMatch
(string A, string B) { string AA=""; for(int i=0;i<(B.size()/A.size())+2;i++) { AA=AA+A; if(AA.find(B)<AA.size()) return i+1; } return -1; } };