字符串搜索算法

✍ dations ◷ 2025-12-08 02:32:23 #字符串匹配算法

字符串搜索算法(String searching algorithms)又称字符串比对算法(string matching algorithms)是一种搜索算法,是字符串算法中的一类,用以试图在一长字符串或文章中,找出其是否包含某一个或多个字符串,以及其位置。

最直观的解法是比对,如下例中,在字符串haystack中找出字符串needle

char* haystack;char* needle;int hlen, nlen, found;int i,j,k;found = 0;hlen = strlen(haystack);nlen = strlen(needle);for (i = 0; i < hlen; ++i) {    for (j = 0; j < nlen; ++j) {        if (haystack != needle) break;        if (j == nlen - 1) found = 1;    };};return found;

上例中,若字符串needle存在于字符串haystack中,则传回1,否则传回0。

但是此直观算法的复杂度为 O(mn),其中haystack的长度为n、needle的长度为m,所以另有更快速的算法。

令 为模式的长度, 为要搜索的字符串长度, 为字母表长度。

相关

  • 流行性脑脊髓膜炎流行性脑膜炎又名流行性脑脊髓膜炎(Epidemic meningitis),简称流脑。冬春季节是此病的高发期,发病高峰一般出现在每年的3月~4月份。如及早发现,及早治疗,本病治愈率较高。流行性脑
  • 姆尔特诺默县摩尔诺玛县(Multnomah County, Oregon)是位于美国俄勒冈州北部的一个县。成立于1854年12月22日,县治波特兰。面积1,206平方公里 (全州最小)。根据美国2000年人口普查数字,共有人
  • 墨西哥湾暖流墨西哥湾流,简称湾流(英语:Gulf stream),是大西洋上重要的洋流,以及全球最大的洋流。起源于墨西哥湾,经过佛罗里达海峡沿着美国的东部海域与加拿大纽芬兰省向北,最后跨越北大西洋通
  • 伊热夫斯克伊热夫斯克 (俄语:Иже́вск;乌德穆尔特语:Иж)是俄罗斯乌德穆尔特共和国首府。2002年人口632,140人,是俄国人口第二十多的城市。伊热夫斯克过去是一个工业城市,其特点为各式
  • 中性进化理论中性演化理论全称为分子演化的中性理论(英语:Neutral theory of molecular evolution),简称为中性理论。是日本遗传学家木村资生在1968年早期所提出的一种演化理论。这个理论认
  • CD238Kell血型系统是一组人类红细胞表面的抗原,它在血型的确定上有重要的作用,它也是溶血疾病的攻击目标。 Kell血型系统有K、k和 Kp三种不同的抗原。
  • 阿蒙涅姆赫特二世阿蒙涅姆赫特二世(英语:Amenemhet II)古埃及中王国时期第十二王朝的第三任国王。(约公元前1929年—约公元前1895年在位),为第十二王朝建立者阿蒙涅姆赫特一世之孙。他促进了埃及的
  • 柯拉蓉玛莉亚·科拉松·“柯莉”·许寰哥·阿基诺(菲律宾语:Maria Corazon "Cory" Cojuangco Aquino,1933年1月25日-2009年8月1日),亦称科拉松,本名许娜桑,华文媒体通常简称阿基诺夫人,菲律
  • 神导演化论神导演化论,或称“演化创造论”,不是一个科学意义上的理论学说,而是关于演化论学说的宗教解读观点。更确切地说,是关于经典宗教教义如何与生物演化的理解部分或完全相融的总体观
  • 有机钾化学有机钾化学是研究碳-钾键的化合物的化学分支。有机钾化合物非常活泼,C-K键有高度的离子性。有机钾化合物可以由金属钾和卤代烃直接反应得到,一般选用氯代烃:但这种制法容易发送