天天看點

LeetCode_686_重複疊加字元串比對

題目描述:

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

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

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

注意:

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

class Solution {
public:
    int repeatedStringMatch(string A, string B) {
        for (auto i = 0, j = 0; i < A.size(); ++i) {
        for (j = 0; j < B.size() && A[(i + j) % A.size()] == B[j]; ++j);
        if (j == B.size()) return (i + j) / A.size() + ((i + j) % A.size() != 0 ? 1 : 0);//用于判斷是否需要再增加一個A
        }
    return -1;
    }
};