BoP——3.1字符串及其循环字符串是否包含另一个字符串
2017-10-18 本文已影响0人
Myth52125
题目
方法一
循环字符串挨个对比目标字符串
低效
方法二
空间换时间。
ABCD->ABCDA->ABCDAB->ABCDABC->ABCDABCD
然后在比较,省去了,循环的额外开销。
但是,同时需要注意,目标字符串不能大于原字符串
#include <iostream>
#include <cstring>
bool hasStr1(char *source,size_t len,char *target)
{
char tmp=source[0];
for(int i=0;i<len-1;i++)
{
source[i]=source[i+1];
}
source[len-1]=tmp;
if(strstr(source,target))
{
return true;
}
return false;
}
using namespace std;
bool hasStr2(string source,string target)
{
if(source.size()<target.size())
{
return false;
}
for(int i=0;i<source.size();i++)
{
if(strstr(source.c_str(),source.c_str()))
{
return true;
}
source.push_back(source[i]);
}
return false;
}