字符串搜索算法

✍ dations ◷ 2025-11-21 21:25:41 #字符串匹配算法

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

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

相关

  • 流汗汗液,或汗,是由人等高等动物透过汗腺所分泌出的液体。汗的分泌受到植物性神经系统调节。汗液的主要成分是水,约占总成分的98%到99%,其余物质为氯化钠,极少量的尿素、氨和其他盐类
  • 土壤压实土壤压实是指家畜或碾压机器的重量压在土壤上,导致土壤失去其内部的空隙。土壤压实,也可能会导致土壤中缺水。因为土壤变得不那么能够吸收雨水,从而增加了地表溢流和土壤侵蚀的
  • AmOsub2/sub二氧化镅 (AmO2) 是一种黑色的 镅化合物,它可以做为α粒子源,常用于电离式烟雾探测器。固体的二氧化镅为结晶态, 结构类似于萤石与CaF2的结构 。
  • 马萨葡萄园岛坐标:41°24′N 70°37′W / 41.400°N 70.617°W / 41.400; -70.617马萨葡萄园岛(英语:Martha's Vineyard),常被简称为“葡萄园岛”,是美国马萨诸塞州外海一岛屿,位于鳕鱼角(Cape C
  • 郑天佐郑天佐(1934年9月6日-),物理学家,中央研究院院士。出生于台湾台中县。1958年毕业于国立台湾师范大学理化系,1964年获得美国宾州州立大学物理系硕士,1966年获得博士学位。1967年至19
  • 粉红枝瑚菌粉红枝瑚菌(学名:Ramaria formosa),俗称美丽的珊瑚菌(beautiful clavaria)、英俊的珊瑚菌(handsome clavaria)、黄色尖顶(yellow-tipped-)和粉红色的珊瑚菌(pink coral fung),是一种广泛
  • 海难海难,有时也称作船难。是指船舶、潜艇等交通工具在海上运输过程中由于自然或人为原因造成重大事故,导致所载人员伤亡或货物、财产损失的突发事件。由于轮船运载能力大,海难造成
  • 三菱汽车三菱汽车工业(日语:三菱自動車工業,英语:Mitsubishi Motors Corporation),简称三菱汽车、MMC,是源自日本的跨国汽车制造商,总部设在东京芝五丁目。在三菱汽车爆发造假丑闻后,由日产收
  • 美国权利法案美国权利法案是美国宪法前十条修正案的统称。这些修正案的提出是为了缓解那些反对批准宪法的反联邦党人(英语:Anti-Federalists)的担忧,其中保障了多项个人自由,限制了政府的司法
  • 飞部飞部,为汉字索引中的部首之一,康熙字典214个部首中的第一百八十三个(九划的则为第八个)。就正体中文中,飞部归于九划部首,而简体中文则归在三划。飞部只以左方、下方为部字。且无