686. Repeated String Match
题目描述和难度
- 题目描述:
给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。
举个例子,A = "abcd",B = "cdabcdab"。
答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。
注意:
A
与 B
字符串的长度在1和10000区间范围内。
- 题目难度:简单。
- 英文网址:686. Repeated String Match 。
- 中文网址:686. 重复叠加字符串匹配 。
思路分析
求解关键:
参考解答
参考解答1
public class Solution {
// 特殊测试用例: A="abc", B="cab"
// A "abcd",
// "abcdabcd"
// B = "cdabcdab"。
public int repeatedStringMatch(String A, String B) {
int blen = B.length();
int count = 1;
StringBuilder stringBuilder = new StringBuilder(A);
while (stringBuilder.length() < blen) {
stringBuilder.append(A);
count++;
}
if (stringBuilder.indexOf(B) >= 0) {
return count;
}
stringBuilder.append(A);
if (stringBuilder.indexOf(B) >= 0) {
return count + 1;
}
return -1;
}
public static void main(String[] args) {
String A = "abcd";
String B = "cdabcdab";
Solution solution = new Solution();
int repeatedStringMatch = solution.repeatedStringMatch(A, B);
System.out.println(repeatedStringMatch);
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0686-repeated-string-match ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。