面试题1测试:
从字符串str1中查找是否有符串str2,如果有返回true 如果没有,返回false
#include<iostream>
using namespace std;
bool searchStr(const char *pSource,const char *pSearch)
{
//在pSource查找字符pSearch是否存在
int lenSource=strlen(pSource);
int lenSearch=strlen(pSearch);
int firstCharNum = lenSource+1;
//判断搜索字符串是否比源字符串大
if(lenSearch>lenSource)
{
return false;
}
//遍历字符串 找到第一个相同的字符位置 firstCharNum
for(int i=0;i<lenSource;i++)
{
if(pSource[i]==pSearch[0])
{
//找到目标字符
firstCharNum = i;
break;
}
}
if(firstCharNum>lenSource|| (lenSource-firstCharNum)<lenSearch)
{
//没有找到相同字符
return false;
}
//首字符之后字符连续相同返回true
int j=1;
for(int i=firstCharNum+1;i<(firstCharNum+lenSearch);i++)
{
//遍历字符串
if(pSource[i]==pSearch[j])
{
//找到目标字符
j++;
}
else
{
//递归调用自己
const char *newsource=pSource+firstCharNum+1;
return searchStr(newsource,pSearch);
}
}
return true;
}
void main()
{
char a[]="abcdebfaaababf";
char b[]="bf";
if(searchStr(a,b))
{
cout<<"a 中 含有 b 字符串 true"<<endl;
}
else
{
cout<<"a 中不含有 b 字符串 true"<<endl;
}
system("pause");
}