字符串搜索算法

✍ dations ◷ 2025-12-09 11:13:05 #字符串匹配算法

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

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

相关

  • 斯德哥尔摩大学斯德哥尔摩大学(瑞典语:Stockholms universitet)位于瑞典首都斯德哥尔摩,始建于1878年,是瑞典国立大学。拥有人文、社会科学、法学、自然科学与数理等领域系所,在1960年9月3日国有
  • 熊虫缓步动物门(学名:Tardigrata)是俗称水熊虫的一类小型动物,主要生活在淡水的沉渣、潮湿土壤以及苔藓植物的水膜中,少数种类生活在海水的潮间带。有记录的大约有750余种,其中许多种
  • SOsub3/sub三氧化硫(IUPAC名:sulphur trioxide,分子式:SO3)是一种硫的氧化物,有类似二氧化硫的气味,溶于水中反应成硫酸。它的气体形式是一种严重的污染物,是形成酸雨的主要来源之一。在673K、
  • 浪漫主义音乐浪漫时期的音乐是维也纳古典乐派的延续和发展,是西方音乐史上的一种音乐风格或者一个时代。浪漫主义主要用于描述1830年—1850年间的文学创作,以及1820年—1900年间的音乐创作
  • 圣米歇尔喷泉坐标:48°51′11.32″N 2°20′37.32″E / 48.8531444°N 2.3437000°E / 48.8531444; 2.3437000圣米歇尔喷泉(Fontaine Saint-Michel,法语发音:.mw-parser-output .IPA{font-fa
  • 柱色谱柱色谱法(英语:Column chromatography,又称为柱层析,俗称过柱子)是一种制备性色谱(Preparative chromatography),在化学中是最为常用的从混合物中分离纯净物的分离方法。不同蛋白质
  • 南港软件工业园区南港软体园区,全称南港软体工业园区,简称南软,是位于台湾台北市南港区的知识型工业园区。产业以软件IC设计、数位创意、生物科技及文化创意等知识密集型产业为主,允许支援性服务
  • 在互联网上,没人知道你是一只狗“在互联网上,没人知道你是一条狗”(英语:On the Internet, nobody knows you're a dog)是一句互联网上的常用语,因为《纽约客》1993年7月5日刊登的一则由彼得·施泰纳(Peter Stei
  • 伦敦城市机场伦敦城市机场(英语:London City Airport;IATA代码:LCY;ICAO代码:EGLC)是一个位于伦敦码头区的机场,由于该机场的跑道距离,最大能起降的机型为空中客车A318等级的支线客机。伦敦城市机
  • 美鞭达唑甲苯咪唑(英语:Mebendazole,简称MBZ),又名安乐士、美鞭达唑,为治疗多种寄生虫感染的指定用药。治疗对象包含蛔虫、蛲虫、线虫、绦虫、钩虫、滴虫、包囊虫,以及鞭虫类的感染。该药属