字符串搜索算法

✍ dations ◷ 2025-01-23 12:11:12 #字符串匹配算法

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

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

相关

  • 下击暴流下击暴流(英文:Downburst)是在地面或地面附近由对流性下沉气流引起的破坏性的强风,水平尺度为1公里到10公里。由日本气象学家藤田哲也首先发现,下击暴流到达地面或靠近地面时可产
  • 青春痘痤疮(英语:acne、拼音:cuó chuāng、注音:ㄘㄨㄛˊ ㄔㄨㄤ);也称为寻常性痤疮(拉丁语:acne vulgaris),在毛囊被死皮细胞和来自皮肤的油脂堵塞时出现。 它的特点是黑头或白头、疙瘩、
  • 包皮过长包皮(英语:Foreskin),一般指包在雄性阴茎龟头上的一层皮,有时也包括女性生殖构造上,包覆阴蒂的阴蒂包皮。包皮在胚胎时期伴随阴茎成长,有保护龟头防止外来伤害的作用。一般在青春期
  • 山泥倾泻山体滑坡(英文:Landslide),又称山崩、山泥倾泻或土溜,是指在重力的影响下块体沿着一段山坡下滑的坍方现象。若是土体坍方时,混和雨水或河水则演变成土石流。地滑又称走山,是融合岩
  • 法布里-珀罗干涉仪在光学中,法布里-佩罗干涉仪(英文:Fabry–Pérot interferometer)是一种由两块平行的玻璃板组成的多光束干涉仪,其中两块玻璃板相对的内表面都具有高反射率。法布里-佩罗干涉仪也经
  • 同型二聚体在生物化学中,双聚体为由两个分子组合而成的高分子配合物,常以非共价键键结。像是蛋白质或是核酸皆为高分子。是一种蛋白质四级结构。 同源双聚体,可由两个相同的分子组合而成(
  • 湿婆派湿婆教(梵语:शैव पंथ,śaiva paṁtha,英语:Shaivism,Shaivam),又称湿婆派、希瓦派,原义是与湿婆合一,是印度教中四个最主要教派之一,尊崇湿婆为最高的神明。它的信徒被称为希瓦(Sh
  • 井口贞夫井口贞夫(日语:井口 貞夫/いぐち さだお Iguchi Sadao,1899年10月18日-1980年5月27日),日本外交官。曾担任外务事务次官及驻美国、加拿大和中华民国大使。1969年获颁勋一等瑞宝章
  • 桑海人桑海人(Songhai)是西非的一个族群,为古代桑海帝国的主要族群,后因为国家瓦解,桑海人开始分散,现在的马里说桑海语族语言的人还将自己称为桑海人,但此外还有的自称哲尔马人等。
  • 大千岛群岛大千岛群岛(俄语:Большая Курильская гряда,转写:Bolshaya Kurilskaya gryada)是千岛群岛的一个组成部分。大千岛群岛由太平洋上的一系列岛屿组成,包括北千