LeetCode:686.重复叠加字符串匹配

题目:

给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。

举个例子,A = "abcd",B = "cdabcdab"。

答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。

源码:

class Solution {
    public int repeatedStringMatch(String A, String B) {
        for (int i = 0; i < A.length(); i++) {
            if (A.charAt(i) == B.charAt(0)) {
                int num = 1;
                int j = 0;
                int k = i;
                while (A.charAt(k) == B.charAt(j)) {
                    k++;
                    j++;
                    if (j >= B.length()) {
                        return num;
                    }
                    if (k >= A.length()) {
                        k = 0;
                        num++;
                    }
                }
            }
        }
        return -1;
    }
}
发布了340 篇原创文章 · 获赞 2 · 访问量 8328

猜你喜欢

转载自blog.csdn.net/qq_45239139/article/details/103807720