C函数库中有一个函数 strstr(char*, char*),它实现的是在一个原字符串中查找一个子串,如果找到这样的一个子串,返回这个子串在原字符串中的起始位置,若没有找到这样的一个子串,则返回NULL。
但是,函数库中实现的仅是一般情况下的查找,即没有做太多优化,在执行一些特殊的字符串时效率很低,所以,在很多面试中要求改进这个算法,实现效率高的 strstr 算法,这里,我对原算法进行几处改动,在对某些特殊测试用例时,执行效率确实比原算法高出许多,这里,贴出实现代码,改动的地方在实现中已有注释,当然,各位朋友有更高效率的实现方法,请不要吝啬您的指教:
代码如下所示:
#include <cstring>
#include <iostream>
#include <cassert>
using namespace std;
char* my_strstr(char* str, char* sub)
{
assert(str != NULL);
assert(sub != NULL);
int str_len