面试遇到的题目:strstr 子串查找
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
char *strstr(char *buf, char *sub)
{
char *bp, *sp;
if (!*sub)
return buf;
while (*buf) {
bp = buf;
sp = sub;
do {
if (!*sp)
return buf;
} while (*bp++ == *sp++);
buf += 1;
}
return 0;
}
{
char *bp, *sp;
if (!*sub)
return buf;
while (*buf) {
bp = buf;
sp = sub;
do {
if (!*sp)
return buf;
} while (*bp++ == *sp++);
buf += 1;
}
return 0;
}
更加高效的算法还有KMP算法
KMP是字符串匹配的高效算法。
它的基本思路是,对于模式串建立一个“失败转移表”(fail transform table)。设模式串为B,原串为A,也就是说,当A[i]!=B[j]的时候,A[i]可能与B[P[j]]匹配。P可以在事先对B进行一次“自匹配”以计算出来。