思路
class Solution {
public:
int repeatedStringMatch(string a, string b) {
//例如案例 2 ,复制的次数是 bSize / aSize
//例如示例 1 ,复制的次数是 bSize / aSize + 1
//例如:a = "abcd" , b = "dabcdabcda" ,需要复制 bSize / aSize + 2 次,得到 "abcdabcdabcdabcd"
//只有这三种可能,再多复制也只是重复了
//那么我们就对这三种情况分别应用 find 函数,如果查找到了就返回对应的复制次数
int sizeA = a.size();
int sizeB = b.size();
int k = sizeB/sizeA;
string temp1 = "";
for(int i=0;i<k;i++){
temp1 += a;
}
//cout<<"temp1:"<<temp1<<endl;
string temp2 = temp1 + a;
string temp3 = temp2 + a;
if(temp1.find(b)!=std::string::npos){
return k;
}
else if(temp2.find(b)!=std::string::npos){
return k+1;
}
else if(temp3.find(b)!=std::string::npos){
return k+2;
}
return -1;
}
};