字符串搜索算法

✍ dations ◷ 2025-06-07 03:19:53 #字符串匹配算法

字符串搜索算法(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,所以另有更快速的算法。

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

相关

  • 黑粉菌见内文黑粉菌目(学名:Ustilaginales)是担子菌门黑粉菌纲下的一目。该目真菌是重要的植物病原菌,可引起多种植物的黑粉病。另有少数黑粉菌的菌瘿可食用,如原产自墨西哥的玉米蘑菇(
  • 上瘾成瘾(英语:addiction)是指一种重复性的强迫行为,即使这些行为已知可能造成不良后果的情形下,仍然被持续重复。这种行为可能因中枢神经系统功能失调造成,重复这些行为也可以反过来
  • 甲壳亚门见内文甲壳亚门(学名:Crustacea)是由非常大的一组的节肢动物门形成的,通常被当作是一个亚门,包括常见的物种,例如螃蟹,虾,龙虾,淡水龙虾,磷虾,和藤壶等等。这些物种通过对非常不同的环
  • 部门政治主题英国政府(女王陛下政府)由许多大臣和国务大臣所领导的部门组成,这些部门的工作由部门内的公务员来完成。英国政府部门由内阁部门和非内阁部门组成,其中内阁部门下辖若干
  • 威廉·贝特森威廉·贝特森(英语:William Bateson, 1861年8月8日-1926年2月8日),英国遗传学家,剑桥大学圣约翰学院研究人员。他是第一个使用遗传学一词来描述遗传和变异规律的人,并在1900年雨果
  • 连续概率概率分布(德语:Wahrscheinlichkeitsverteilung;英语:probability distribution)或简称分布,是概率论的一个概念。使用时可以有以下两种含义:称X和Y为同分布的随机变量,当且仅当对任
  • 骡子Equus mulus Erxleben, 1777骡子(学名:Equus ferus × asinus)是马和驴的杂交种。严格地说,在中文里母马和公驴的后代称为马骡(“骡,驴父马母者也”《说文解字注》。“骡”是“骡
  • 细腰亚目见内文细腰亚目(学名:Apocrita)是膜翅目中最重要的亚目,包括许多科,相对而言广腰亚目的种类要少得多。这两个目的昆虫大多有透明的翅膀,细腰亚目的昆虫的第1和第2腹环(abdominal r
  • .cz使用规则.cz为捷克国家和地区顶级域的域名。它由捷克网络信息中心(CZ.NIC)管理,所有申请者必须向得到授权的域名登记处进行订购和登记后才可使用该域名。捷克的前身捷克斯洛伐
  • 逻辑非逻辑非是布尔代数中一种一元运算。它的运算结果是将运算元的真值取反。命题的非可以有几种写法:以上可以读做"不成立"或者"非"。的真值表定义如下:~即在的条件下,结论不成立。