字符串搜索算法

✍ dations ◷ 2025-11-25 01:26: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,所以另有更快速的算法。

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

相关

  • 叠氮氯霉素叠氮氯霉素(英语:Azidamfenicol)是一种酰胺醇类抗生素,其结构与氯霉素相似。叠氮氯霉素只能外用,其制品(如滴眼液、软膏等)用于治疗敏感细菌感染。医学导航:病菌细菌(分类)gr+f/gr+a(t)/gr
  • 邻肾小球细胞邻肾小球细胞(juxtaglomerular cells、球旁细胞),又称JG细胞(JG cells)为肾脏内负责合成、贮存,及分泌肾素的细胞。邻肾小球细胞属于特化平滑肌,主要位于入球小动脉的管壁上,部分则
  • 卡姆登县康登县(Camden County, Georgia)是美国乔治亚州东南角的一个县。东临大西洋,南邻佛罗里达州。面积2,027平方公里。根据美国2000年人口普查,共有人口43,664人。县治伍德拜恩 (Woo
  • 灞桥灞桥位于中国陕西省西安市东10公里的灞河上,是古代关中通向东方的重要交通设施。由于长安至关东三条要道在灞河至长安城之间并为一路,中间以灞桥连通,故地位十分重要。程大昌有
  • 褐煤褐煤是一种低热质的煤炭,是发育不完全,处于次烟煤和泥炭之间状态的煤。在煤炭资源比较缺乏的地区应用比较广泛,俄罗斯、美国、加拿大、印度、澳大利亚和欧洲一些国家都在开采,其
  • 1,2-丙二醇1,2-丙二醇,也称作丙二醇,是一种有机化合物(二醇),其化学式为C3H8O2。丙二醇通常是略有甜味、无臭、无色透明的稠状液体。化学上,丙二醇属于二元醇的一种,可与水、丙酮及氯仿等多种
  • 烧结烧结 (英语:sintering) 是一种固体材料压制及成形的过程,制造过程中会在材料上施加热 及/或压力,但加热温度会低于材料的熔点。像陶器的制作就要经过烧结的过程,而将金属粉末烧
  • 棉兰棉兰市(印尼语:Kota Medan),印度尼西亚北苏门答腊省首府,位于该省北部。是印度尼西亚仅次于雅加达及泗水的第三大城市,亦是苏门答腊最大城市。华人约有50万,也有颇具规模的泰米尔人
  • 沙麦·顺达卫沙马·顺达卫(泰语:สมัคร สุนทรเวช,皇家转写:Samak Sunthorawet 泰语发音:;1935年6月13日-2009年11月24日),华文名李沙马,生于曼谷,为泰国华裔。他是泰国人民力量党的前任
  • 帕克帕克(英文:Parker),是美国科罗拉多州道格拉斯县下属的一座城市。建市于1981年5月1日,面积大约为20.491平方英里(53.072平方公里)。根据2010年美国人口普查,该市有人口45,297人。2011