字符串搜索算法

✍ dations ◷ 2025-07-02 09:09:10 #字符串匹配算法

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

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

相关

  • 平等平等主义者是起源于蒙昧时代的个体符号名称,以实现平等为最大理想及唯一目标,包括所有生命持有物的平等。平等主义者的思想来源于自然赋予,不是一种被创造,而是自然的一种核心本
  • 波斯尼亚-赫塞哥维纳面积以下资讯是以2017估计家用电源国家领袖国内生产总值(购买力平价) 以下资讯是以2018年估计国内生产总值(国际汇率) 以下资讯是以2018年估计人类发展指数 以下资讯是以2018年
  • 卡托研究所加图研究所(英语:Cato Institute,又译卡托研究所)是一个位于美国华盛顿哥伦比亚特区的自由意志主义智库。是美国五大保守派智库之一。研究所自许的任务是要“扩展公共政策辩论的
  • 主小行星带小行星带是太阳系内介于火星和木星轨道之间的小行星密集区域。在已经被编号的120,437颗小行星中,有98.5%是在这里被发现的。小行星是由岩石或金属组成,围绕着太阳运动的小天体
  • Bloomberg L.P.美国纽约州纽约市彭博有限合伙企业(英语:Bloomberg L.P.)是美国的跨国大众传播媒体公司,由迈克尔·布隆伯格于1981年创立,提供新闻、全球商业和金融数据的跨国集团。彭博于全球16
  • 太阳女神螺纲见内文太阳女神螺纲(学名:Helcionelloida)是一类已灭绝的古老软体动物。太阳女神螺纲是已知最古老的有壳亚门生物;也就是说这类生物有一个矿化外壳。其下部分物种曾被错误分类为
  • 帕尔杜比采州- Chrudim District- Pardubice District- Svitavy District- Ústí nad Orlicí District帕尔杜比采州(捷克语:Pardubický kraj),是捷克的一个州,历史上属于波希米亚的东
  • 县治县城又称县治,即中国地方行政区——县的治所,近代指县级行政机关的常驻地。如今中国的县城(县包括县级行政区)有一千余个。越南沿用古称,称为县莅。在中国,自秦始皇建立郡县制开始
  • 黑背胡狼黑背胡狼,又叫黑背豺,学名为Canis mesomelas,英文名为Black-backed Jackal。肩高40厘米(16英寸),体重9~14千克(20~31英磅)。因背部为黑色而得名。多栖息于非洲草原。黑背豺很少自己捕
  • 狂犬病疫苗狂犬病疫苗是指用来预防狂犬病的疫苗。目前已有很多有效且安全的疫苗。在暴露于病毒(例如被狗或蝙蝠咬)之前或之后一段时间都可以施打狂犬病疫苗。在接种三剂后可以有长期的免