字符串搜索算法

✍ dations ◷ 2025-12-06 02:33:57 #字符串匹配算法

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

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

相关

  • 计量经济学计量经济学(英语:Econometrics),又译经济计量学,是以数理经济学和数理统计学为方法论基础,对于经济问题试图对理论上的数量接近和经验(实证研究)上的数量接近这两者进行综合而产生的
  • 电生理学在神经科学,电生理学是一门研究生物细胞或组织的电学特性的科学,主要研究神经元的电学特性,尤其是动作电位包括细胞膜电势变化与跨膜电流的调节。它涉及在多种尺度上从单个离子
  • FMN黄素单核苷酸(英语:Flavin mononucleotide,FMN)是一个由核黄素激酶自核黄素(维生素B2)产生出来的生物分子,其功能包括了NADH脱氢酶在内的多种氧化还原酶的辅基并且作为生物感蓝光蛋
  • 管制图控制图(Control chart),也称为修哈特图或流程行为图,是统计过程控制(英语:Statistical process control)中,确定制造或业务流程是否在统计控制状态下的一种工具。控制图是七种质量控
  • 农业部长美国农业部(英语:United States Department of Agriculture,缩写:USDA),是美国联邦政府的一个行政部门,该部通过对农业生产的支持,提高美国人民的生活质量。农业部前身是1862年5月15
  • 天牛10个亚科,详见内文天牛科(学名:Cerambycidae),其物种通称作天牛,是鞘翅目昆虫的一个科。已知26,000种以上,分布于全世界(英语:Cosmopolitan distribution),当中有稍微多于一半分布于东
  • 王象恒王象恒(?年-?年),字微贞,号立宇,山东新城县(今桓台县新城镇)人。明朝政治人物。王象恒为王之猷之子。万历二十三年(1595年)登乙未科进士,授河南祥符县知县。历官右佥都御史,巡抚应天。王象
  • 勒托病毒亞科姬蛙甲型勒托病毒一型(学名:Microhyla alphaletovirus 1,MLeV)是勒托病毒亚科(Letovirinae)及甲型勒托病毒属(Alphaletovirus)的唯一一种病毒,属于冠状病毒科,为一种在小雨蛙(Microhyla
  • 威斯敏斯特主教座堂威斯敏斯特宝血主教座堂(英语:Westminster Cathedral,The Metropolitan Cathedral of the Precious Blood)是英格兰伦敦的天主教威斯敏斯特总教区的主教座堂,英国最大的天主教堂,
  • 上街区上街区位于中原腹地,始建于1958年,距省会郑州市区38公里,北临黄河,南依嵩山,总面积64.7平方公里,总人口13万人,辖1个镇,5个街道办事处。下辖5个街道,1个镇:本地工业较为发达,内有国家生