字符串搜索算法

✍ dations ◷ 2025-12-04 14:51:13 #字符串匹配算法

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

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

相关

  • 蠕虫病蠕虫病,也称为蠕虫感染,是人和其他动物一部分身体被寄生蠕虫感染导致的一种巨噬细胞疾病。这些寄生虫种类很多,大致分为绦虫、吸虫和线虫。它们通常生活在宿主的胃肠道中,但也可
  • 巩膜巩膜属于眼球纤维膜,在眼球内,约占眼球纤维膜的5/6,为乳白色不透明的纤维膜,起保护眼球内容物和维持眼球形态的作用。巩膜前缘接角膜缘,后方与视神经的硬膜鞘相延续。巩膜与角膜
  • 趋磁细菌趋磁细菌(英语:Magnetotactic bacteria,缩写MTB)是细菌中的一个多系群,由Richard P. Blakemore于1975年发现,能感应地磁场的磁感线。为达到这一功能,这些细菌拥有一个叫作磁小体的
  • 各政党政治主题议席数目是2019年大选结果。
  • 法兰克福学派法兰克福学派是以德国法兰克福大学的“社会研究中心(英语:Institute for Social Research)”为中心的一群社会科学学者、哲学家、文化批评家所组成的学术共同体。被认为是新马
  • 安娜贝拉安娜贝拉(英语:Annabella,1907年7月14日-1996年9月18日)是一名法国电影女演员。她曾从1927至1954年出演46部电影,包括1930至40年代晚期的好莱坞电影。安娜贝拉出生于法国圣莫代福
  • 张肇骞张肇骞(1900年12月1日-1972年1月8日),字冠超,浙江省永嘉县(今温州市)人,中国植物学家,主要从事亚热带植物分类及生态的研究。1920年从浙江省立第十中学(今温州中学)毕业,入金陵大学就读,
  • 萨尔察赫河萨尔察赫河 (德语:Salzach)是一条流经奥地利及德国两国的河流。萨尔察赫河全长225公里。“萨尔察赫河”这个名字来自于德语词汇“Salz”,意为“盐”。沿岸的主要城市有萨尔茨堡
  • 广南西路宋代设置广南东路和广南西路。其中广南西路包括今广西全境,以及雷州半岛和海南岛等地。“广西”之称由此而来。
  • 2019冠状病毒病德国疫情2月2月3月3月4月4月过去15日过去15日注释:2019冠状病毒病德国疫情,介绍在2019-2020年冠状病毒病疫情在德国的情况,若无特殊注明,本条目中所有日期均为2020年。疫情最早于中国湖