686. 重複疊加字串匹配
阿新 • • 發佈:2018-12-12
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;
}
};