1086. 重复字符串匹配
给定两个字符串A和B,找到A必须重复的最小次数,以使得B是它的子字符串。 如果没有这样的解决方案,返回-1。
样例
样例1:
输入 : A = "a" B = "b".
输出 : -1
样例 2:
输入 : A = "abcd" B = "cdabcdab".
输出 :3
解释:因为将A重复3次以后 (“abcdabcdabcd”), B将成为其的一个子串 ; 而如果A只重复两次 ("abcdabcd"),B并非其的一个子串.
注意事项
A和B的长度在1到10000之间。
public class Solution {
/**
* @param A: a string
* @param B: a string
* @return: return an integer
*/
public int repeatedStringMatch(String A, String B) {
// write your code here
char[] aChars = A.toCharArray();
char[] bChars = B.toCharArray();
for (int i = 0; i < aChars.length; i++) {
if (aChars[i] == bChars[0]) {
int sum = 1;
int j = 1;
if (j == bChars.length) return sum;
boolean start=true;
for (int k = i + 1; k < aChars.length; k++) {
if (bChars[j] == aChars[k]) {
j++;
if (j == bChars.length) return sum;
} else {
start=false;
break;
}
}
sum++;
for (; j < bChars.length; ) {
if(!start)break;
for (char aChar : aChars) {
if (bChars[j] == aChar) {
j++;
if (j == bChars.length) return sum;
} else {
start=false;
break;
}
}
sum++;
}
}
}
return -1;
}
}