字符串搜索算法

✍ dations ◷ 2025-11-18 19:17:28 #字符串匹配算法

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

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

相关

  • 山梨醇山梨糖醇(Sorbitol),是一种己六醇,是一种能缓慢代谢的糖醇。山梨糖醇分子式C6H14 O6,与单糖的结构相似,可通过还原葡萄糖上的醛基为羟基来获得。山梨醇最早是从花楸树(学名Sorbus p
  • 社会语言学社会语言学(sociolinguistics)是语言学的一门分支学科。社会语言学主要研究社会的各层面(包含文化准则、社会规范或对话情境)对语言运用的影响以及语言对社会的影响。社会语言学
  • Fibrinogen纤维蛋白原(英语:Fibrinogen,又称为血纤维蛋白原)是一种蛋白质,能够溶解于水。血小板破裂时,会释出凝血致活酶,在钙离子的作用下催化凝血酶原变成凝血酶,凝血酶将血浆中原本可水溶的
  • 孚日省孚日省(法语:Vosges,法语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Ge
  • 相容论相容论是一个关于自由意志问题的哲学立场。相容论者认为决定论和自由意志是有可能共存的。换言之,两者是相容的。因为自由意志普遍被认为是道德责任的必然前提,所以相容论者进
  • 孟买管辖区孟买管辖区(英语:Bombay Presidency、马拉提语:मुंबई इलाखा、古吉拉特语:મુંબઇ પ્રાંત、卡纳达语:ಬಾಂಬೆ ಪ್ರಾಂತ、信德语:بومبي صدارت)
  • 非洲东部东非即东部非洲地区,根据联合国的次分区共有19个国家或属地:亚洲东亚 · 东南亚 · 南亚 · 中亚 · 西亚/西南亚 · 北亚/西伯利亚  · 东北亚 其他:近东 · 中东
  • 胡 玫胡玫(1958年9月2日-),中国大陆女导演,中国电影集团一级导演,现任全国人大代表、全国文联委员、中国电视艺术家协会副主席。1982年毕业于北京电影学院导演系。前夫是导演苏舟,现夫是
  • 信丰县信丰县是中国江西省赣州市所辖的一个县。总面积为2878平方公里,2015年底人口为75万。唐朝永淳元年(公元682年)析南康县置南安县,是为建县之始。天宝元年(公元724年),因与泉州南安县
  • 犬瘟热犬瘟热,又称犬瘟、狗瘟, 是一种病毒性疾病, 对于犬科,鼬科,臭鼬科,鬣狗科,猫熊科,浣熊科,鳍足亚目和一些灵猫科和猫科的动物(但对于家猫没有影响,猫科动物犬瘟热或猫泛白细胞减少症是