字符串搜索算法

✍ dations ◷ 2024-12-22 18:47:22 #字符串匹配算法

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

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

相关

  • 唇疮唇疮,学名复发性唇疱疹,是出现于嘴唇或鼻孔边缘的感染,由具有传染性的单纯疱疹病毒一型病毒所引起。唇疮出现初期,患处会出现痕痒和灼热,然后出现水泡,之后会演变成溃疡。
  • 造纸厂造纸厂是使用福德利尼尔造纸机或类似的设备将木浆或其他成分制造成纸的工厂。这些设施因在周围环境中制造出难闻的气味而闻名。对使用亚硫酸盐制浆法的工厂而言,难闻的气味(通
  • 植物进化发育生物学现代生物分类群体从它们的 共同祖先遗传分化的图示。进化论介绍(英语:Introduction to evolution) 演化的证据 共同起源 共同起源的证据群体遗传学 · 遗传多样性 突变 · 自
  • 乌头乌头属又名附子属(学名:Aconitum)是一种属于毛茛科的开花植物的属,这个属有250多个种。又名.mw-parser-output ruby.zy{text-align:justify;text-justify:none}.mw-parser-outpu
  • 悉尼悉尼市(雪梨市)(英语:City of Sydney)位于澳大利亚新南威尔士州,由悉尼中心商务区及附近的悉尼都会区的内西区的郊区组成。悉尼市是一个地方政府区域,以往的地方政府区域南悉尼市于
  • 吉美前列素吉美前列素是前列腺素E1的一种类似物,常用于治疗产科出血,也可与米非司酮一起用于24周内怀孕者堕胎。医学导航:遗传代谢缺陷代谢、k,c/g/r/p/y/i,f/h/s/l/o/e,a/u,n,mk,cgrp/y/
  • 橘子橘子(学名:Citrus reticulata),或写作桔子,芸香科柑橘属的一种水果,原产自中国。闽南语称橘为柑仔,西南官话区的各方言中呼为“柑子”或“柑儿”,也有一些方言称之为“橘柑”。橘子
  • 关诗敏关诗敏(Sharon Kwan,1995年10月12日-),美籍华人,台湾著名华语流行音乐女歌手,2011年6月参加第一届《华人星光大道》,于2012年1月8日总决赛获得冠军,创下星光史上最年轻的总冠军纪录。
  • 梦莲湖梦莲湖(英语:Moraine Lake)是加拿大亚伯达省班夫国家公园的一个冰川湖,距路易斯湖14公里。它位于十峰山谷下,海拔高度为1,884米,湖泊面积为0.5平方公里。由于梦莲湖是一个冰川湖,因
  • 济南广播电视台济南广播电视台成立于2009年12月,为济南市人民政府直属的正局级事业单位,由原济南人民广播电台、济南电视台及市广播电视局所属其他事业单位合并组建而成。原济南电视台成立于