字符串搜索算法

✍ dations ◷ 2025-11-28 12:29:45 #字符串匹配算法

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

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

相关

  • 监护宣告行为能力(capacity)为一种法律上的概念,其与“权利能力”及“意思能力”不同,乃指为法律行为之资格,亦即个人以独自的意思表示,使其行为发生法律上效果的资格而言。民法中基于私法
  • 木糖醇木糖醇(Xylitol),即(2R,3R,4S)-戊五醇,为糖醇的一种,是一种可以作为蔗糖替代物的五碳糖醇,是木糖代谢的产物,木糖广泛存在于各种植物中,可从白桦、覆盆子、玉米等植物中提取,目前主要
  • 舒梅切尔彼得·波列斯瓦夫·舒梅切尔,MBE(丹麦语:Peter Boleslaw Schmeichel,(丹麦语发音: ,1963年11月18日-)是丹麦前足球运动员,于2003年4月正式退役。舒梅切尔是丹麦夺得1992年(英语:1992
  • 零级反应在化学中,零级反应(zero-order reaction),(亦称为零次反应)是指反应级数为0的化学反应。零级反应的例子有:对于反应   A →
  • 格雷厄姆格雷厄姆县(英语:Graham County)是美国亚利桑那州东南部的一个县,面积12,020平方公里。根据2010年人口普查,本县共有人口37,220人。本县县治为萨福德。本县成立于1881年3月10日,系
  • 美国南极洲计划美国南极洲计划(英语:United States Antarctic Program,缩写:USAP),亦称作美国南极洲研究计划(United States Antarctic Research Program,缩写:USARP)、美国南极洲局(United States An
  • G5513长沙-张家界高速公路,简称长张高速,中国国家高速公路网编号为G5513,是二广高速公路的联络线之一,自长沙至张家界,全线均位于湖南境内,已全线通车。长常高速公路全长147.924公里,工程
  • 形声字陶文 ‧ 甲骨文 ‧ 金文 ‧ 古文 ‧ 石鼓文籀文 ‧ 鸟虫书 ‧ 篆书(大篆 ‧  小篆)隶书 ‧ 楷书 ‧ 行书 ‧ 草书漆书 ‧  书法 ‧ 飞白书笔画 ‧ 
  • 肝 (脏腑)在中医传统脏象学说中,肝属五行中的木,其主要功能为“疏泄”与“藏血”。其中疏泄包含了精神情绪、消化,以及与气、血、水的流通;而藏血则包括了血液的储藏及调节。除此之外,肝与
  • 反复流产反复流产(recurrent miscarriage)是指两次或两次以上连续流产,过去称为习惯性流产(habitual abortion),而在医学研究中较常使用复发性流产(recurrent pregnancy loss 或 RPL)。造成