字符串搜索算法

✍ dations ◷ 2025-11-29 14:46:44 #字符串匹配算法

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

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

相关

  • 鲨齿龙鲨齿龙属(属名:Carcharodontosaurus)又名望齿龙、噬齿龙、噬人鲨龙,属于兽脚亚目鲨齿龙科,生活于白垩纪的阿尔比阶晚期到森诺曼阶早期,约1亿到9300万年前。鲨齿龙是种巨大的肉食性
  • 跨膜蛋白跨膜蛋白(transmembrane protein,TP)是一种贯穿生物膜(细胞膜)两端的蛋白。许多跨膜蛋白的功能是作为通道或“装载码头”来实施拒绝或允许某种特定的物质跨过生物膜的运输、进
  • 通货紧缩通货紧缩,简称通缩,本意为货币流通数量减少,但也指整体物价水平持续下降的现象,是一个与通货膨胀相反的概念。一般认为通货膨胀率低于0(负的通货膨胀率)时会发生通货紧缩。请注意
  • lisdexamfetamine甲磺酸赖氨酸安非他命(英语:Lisdexamfetamine),名字来源为“离胺酸-右旋安非他命”,是 中枢神经系统(CNS)右旋安非他命刺激剂的前体药物,一种安非他命类(英语:substituted amphetamine
  • 修宪宪法修正,简称修宪,指的是国家宪法的修改。有一些国家允许修改宪法本文;也有一些国家不能修改宪法本文,但允许在本文后面附上增修条文。宪法修改的方法通常写入宪法本身。大多数
  • 清齿龈鼻音是一些语言中存在的一种辅音。它是清鼻音的一种,和普通的鼻音的区别是发音时声带不振动。国际音标中代表代表此音的符号是⟨n̥⟩或⟨n̊⟩,是浊齿龈鼻音的符号和在
  • 酸浆酸浆(Physalis alkekengi),是茄科酸浆属植物,果实可食用,别名红姑娘、挂金灯、金灯、锦灯笼、泡泡草等。在中国北方,菇蔫儿、姑娘儿、菇茑、鬼灯球等名通常是对酸浆、毛酸浆(色黄味
  • 辛纳屈最佳唱片包装1959年 Frank Sinatra Sings for Only the Lonely 年度专辑1960年 Come Dance with Me!1966年 September of My Years 1967年 A Man and His Music 最佳流行男
  • 张济民张济民,1920年出生,著名美籍华人实业家,浙江镇海(今宁波市镇海区贵驷王家桥村)人。1936年,年仅十六岁,张济民远赴日本创业,当时身边带了二十瓮榨菜。他在日本创立了“日独”药品株式
  • 药食药食或药饭(韩语:약식、약밥),是朝鲜族的一种甜点,主要原料是糯米,辅以栗子、红枣、松子、麻油等配料,以蜂蜜(旧时称为“药”)或糖、肉桂和酱油调味,蒸制而成。此物最早见于《三国遗事