字符串搜索算法

✍ dations ◷ 2025-12-09 04:55:57 #字符串匹配算法

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

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

相关

  • 组织学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学组织学(英语:histology)是一门对生物组织
  • 半乳糖血症半乳糖血症(Galactosemia)是一种遗传性代谢疾病,病患不能正常地将半乳糖代谢,但病患具有可以将乳糖分解成半乳糖与葡萄糖的酶,所以这个症状与乳糖不耐症不应混为一谈。半乳糖血症
  • 头颅计算机断层成像术头颅计算机断层成像术(英语:Computed tomography of the head)是指将一系列从不同方向扫描头部的X射线获得的数据经由计算机程序转为颅脑的横断面影像的检查方法。其获得的横断
  • 威廉-亚历山大国王陛下王后陛下贝娅特丽克丝公主殿下 伊莲公主殿下 玛格丽特公主殿下彼得·范·莫伦霍文教授艾琳公主殿下克里斯蒂娜公主殿下威廉-亚历山大·克劳斯·乔治·费迪南德(荷兰
  • 波士顿儿童医院波士顿儿童医院(Boston Children's Hospital)是美国麻塞诸塞州波士顿一所拥有395张立案病床的儿童医院,位于波士顿市内医疗院所林立的长木医学区。它是哈佛医学院与丹那-法博癌
  • CrOsub2/sub二氧化铬是一种无机化合物,化学式为CrO2,为黑色的具有磁性的固体。它曾被广泛应用于磁带制作所需的乳浊液中。随着CD和DVD的日益普及,二氧化铬的使用也有所下降。然而,它仍然用
  • 三卤甲烷三卤甲烷是甲烷的四个氢中的三个被卤素取代基所取代的化合物。很多三卤甲烷在工业上被用作溶剂或制冷剂,也被认为是致癌物质。三卤甲烷也是污染环境的物质。另外,三个卤素取代
  • 圣殿山圣殿山(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey A
  • 运算符算子(英语:Operator)是将一个元素在向量空间(或模)中转换为另一个元素的映射。 算子对于线性代数和泛函分析都至关重要,它在纯数学和应用数学的许多其他领域中都有应用。 例如,在经
  • 总需求总需求(英语:aggregate demand,缩写:AD)是一个宏观经济学概念。指一个在一指定时期及物价的经济体系(Y)内对最终物品及服务的需求的总和。这是商品及服务在一个经济体系中任何可能