题目:
算法:
遍历第一个串与第二个串比较,从第一个串一个一个往后移动
代码:
指针法:
const char *strstr(const char* src,const char* sub)
{
const char *bp;
const char *sp;
if(src ==NULL || sub==NULL)
{
return src;
}
while(*src) //遍历第一个串
{
bp=src; //用于遍历一串
sp=sub; //用于遍历2串
do
{
if(!*sp)
return src; //找到字符串
}while(*bp++ == *sp++);
src+=1; //第一个串中一直往后移
}
return NULL;
}
索引法:
int indexBF(String S,String T,int pos)
{
int i=pos,j=1; //i用于主串的位置 j用于第二串的位置
while(i<=S.size() && j<=T.size())
{
if(S[i]==T[j])
{
i++;
j++;
}
else
{
j=i-j+2; //i-j+1退回到原来位置,+1后移一位
j=1;
}
if(j>T[0])
{
return i-T[0];
}
else
return 0;
}