题目:
分析:终于肯动脑了,分析的很棒。
容易得出,如果有解,那么应该是拼接长度刚好大于目标长度,或者是拼接长度刚好大于目标长度+1.
那么问题就转化为了寻找字符的算法,即数据结构上所学的kmp算法。
当然stl的string有find函数。
判断有没有找到,直接看下标是否在字符串长度内即可。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a="abcd";
string b="cdabcdab";
if(b=="") return 0;
string ss;
int num=0;
while(1)
{
if(ss.size()>=b.size()) break;
num++;
ss+=a;
}
int pos=ss.find(b);
if(pos<0||pos>ss.size())
{
ss+=a;
int pos=ss.find(b);
if(pos<0||pos>ss.size()) return -1;
return num+1;
}
return num;
}