O(n)子字符串算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了O(n)子字符串算法相关的知识,希望对你有一定的参考价值。
所以我一直在研究子字符串搜索算法,发现大多数算法(例如kmp和rabin-karp算法)在进行某些字符串匹配之前,都需要额外的时间复杂度来进行预处理。这样做有什么好处吗?为什么他们不直接跳到立即匹配的字符串,以使big-O时间复杂度不会降至O(m + n)?我尝试通过简单地跳过预处理时间来创建一个我相信是O(n)的子字符串算法(如果我错了,请纠正我)。我想知道为什么人们不这样做,请参考下面的C代码。
int search(char hay[], char needle[], int hayLen, int needleLen)
int found;
int i = 0;
while (i < (hayLen - needleLen + 1))
if (hay[i] == needle[0])
found = 1;
for (int j=0; j<needleLen; j++)
if (hay[i] != needle[j])
found = 0;
break;
i++;
if (found)
return i - needleLen;
else
i++;
return -1;
编辑:
删除了strlen函数以避免任何不必要的时间复杂性
以上是关于O(n)子字符串算法的主要内容,如果未能解决你的问题,请参考以下文章