题目:在字符串中查找子串。给定一个字符串A,要求在一个字符串中查找一个子串B。
#include <iostream>
#include<string.h>
using namespace std;
char * strfind(char *a,char * b)
{
assert(a!=NULL&&b!=NULL);
int lena=strlen(a);
int lenb=strlen(b);
if(lena<lenb) return NULL;
int i=0;
while(i<=lena-lenb)
{
int j=0;
while(j<lenb)
{
if(a[i+j]!=b[j])
break;
j++;
}
if(j==lenb)
return a+i;
i++;
}
return NULL;
}
char * strfind2(char *a,char * b)
{
assert(a!=NULL&&b!=NULL);
int lena=strlen(a);
int lenb=strlen(b);
if(lena<lenb) return NULL;
for(int i=0;i<=lena-lenb;i++)
{
int j=0;
for(;j<lenb;j++)
{
if(a[i+j]!=b[j])
break;
}
if(j==lenb)
return a+i;
}
return NULL;
}
int main()
{
char a[100]="ababcabcacbab";
char b[100]="abcac";
cout<<a<<endl;
cout<<b<<endl;
cout<<strfind(a,b)<<endl;
cout<<strfind2(a,b)<<endl;
return 0;
}
输出结果:
ababcabcacbab
abcac
abcacbab
abcacbab