字符串搜索算法

✍ dations ◷ 2025-09-16 03:54:18 #字符串匹配算法

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

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

相关

  • 胆囊癌胆癌是发生在胆部的恶性肿瘤,常见的有胆管癌、胆囊癌和肝外胆管癌三种。胆癌并不常见,通常会发生在六至七十岁人士身上。原发性胆管癌较少见,性别以男性为多。中上腹及右上腹疼
  • 上髁炎上髁炎(英语:Epicondylitis)是一种肌肉骨骼疾病(英语:musculoskeletal disorder) ,是指上髁(英语:epicondyle)炎症 。由反复性的活动所引起。在运动员中,与技术水准不足有相关 。大约95
  • 索马里语索马里语(索马里语:Af-Soomaali .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium"
  • 对称对称是几何形状、系统、方程以及其他实际上或概念上之客体的一种特征-典型地,对象的一半为其另一半的镜射。在数理上,如果称一个几何图形或物体为对称的话,即表示它是变形的不变
  • NP完全NP完全或NP完备(NP-Complete,缩写为NP-C或NPC),是计算复杂度理论中,决定性问题的等级之一。NP完备是NP与NP困难的交集,是NP中最难的决定性问题。因此NP完备问题应该是最不可能被化
  • 完美主义涅槃谬误(英语:nirvana fallacy)或完美主义谬误(perfectionist fallacy)是一种非形式谬误,系宣称某个解决方案无法做到完美,因此不可行。较白话的诠释是:“不能做到完美,就不应该做”
  • 包为民包为民(1960年3月-)原籍浙江省镇海,生于黑龙江省哈尔滨。制导与控制专家,中国科学院院士。1982年8月,毕业于西北电讯工程学院电子工程系信息处理专业。他是中国航天运载器总体及控
  • 嫡妻嫡妻,或称正室、正妻、正房,俗称大老婆、大婆,是一夫多妻的家庭里面礼制上与丈夫平等的妻子。东亚古代男子一般同时只能有一位正妻,称为嫡妻;宋代之前,古中国只有贾充等数人因特殊
  • 鬼太郎《鬼太郎》是由有“妖怪博士”之称的已故日本漫画家水木茂创作的漫画,于1960年开始连载。一开始以标题为“墓场鬼太郎”,后来作者水木茂于1967年将其名称改名为“ゲゲゲの鬼太
  • Giardia lambliaLamblia intestinalisGiardia duodenalis蓝氏贾第鞭毛虫(学名:Giardia lamblia)又称蓝布尔吉亚尔氏鞭毛虫、梨形鞭毛虫,简称贾第虫。属于鞭毛虫纲,主要寄生在人体肠道内,引起腹痛