本题分类考虑,
1、当a.length() > b.length()时,如果能构成子串,只存在两种情况,要么a中直接有b要么2a中有b,不然,肯定构不成。
2、当a.length() < b.length()时,此时,a最多扩大n倍数,使其整个长度刚好大于b,及n-1时,其长度小于或等于b,n时大于b。
代码如下
int repeatedStringMatch(string a, string b) {
string str;
str += a;
int result = 1;
int num = -1,i = 0;
if(a.length() > b.length()){
num = a.find(b);
if(num != -1){
return 1;
}
a += a;
num = a.find(b);
if(num != -1){
return 2;
}
return -1;
}
for(i = 0;i < a.length();i++){
if(b[0] == a[i]){
break;
}
}
if(i == a.length()){
return -1;
}
while(str.length() - i <= b.length()){
num = str.find(b);
if(num != -1){
return result;
}
str += a;
result++;
}
num = str.find(b);
if(num != -1){
return result;
}
str += a;
result++;
num = str.find(b);
if(num != -1){
return result;
}
return -1;
}