字符串搜索算法

✍ dations ◷ 2025-07-22 16:44:38 #字符串匹配算法

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

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

相关

  • 关节关节(拉丁语:Articulatio)在解剖学里指的是两块或两块以上的骨之间能活动的连接。在解剖学上有不动关节、动关节(连接处有液体)和微动关节(Amphiarthrosis)三种。不动关节有:例如尺
  • 迪奥科里斯佩达努思·迪奥斯科里德斯(古希腊语:Πεδάνιος Διοσκουρίδης;拉丁语:Pedanius Dioscorides),(约40年-90年)。古罗马时期的希腊医生与药理学家,曾被罗马军队聘为军
  • 斯特凡·马拉梅斯特凡·马拉梅(法语:Stéphane Mallarmé,1842年3月18日-1898年9月9日)原名艾提安·马拉梅(法语:Étienne Mallarmé),19世纪法国诗人,文学评论家。与阿蒂尔·兰波、保尔·魏尔伦同为
  • 槌、锤或榔头是一种敲打的工具。“槌”主要以木材或非金属制造,而“锤”主要以金属制造,因为制造材料的不同而导致两者有着不同的实际用途。金属“锤”用途较广,可用于钉钉子、
  • 非洲非洲各国关于2019冠状病毒病疫情的病例和其对应措施。当地时间3月2日,根据摩洛哥国家通讯社马格里布阿拉伯通讯社的报道,当地时间3月2日晚,摩洛哥出现首例输入性新冠肺炎病例。
  • 巴芬岛洋流巴芬岛洋流(Baffin Island Current)为一个由北冰洋巴芬湾西部沿着巴芬岛向南流的洋流。其源头为西格陵兰洋流及由北冰洋流出的水源。其流速约为每日17公里。
  • 沙克尔顿坑沙克尔顿陨石坑(Shackleton)是位于月球南极的一座撞击坑,其地质龄大约有36亿年,在南极至少已存在了20亿年。其名称取自盎格鲁爱尔兰人南极探险家欧内斯特·亨利·沙克尔顿爵士(1
  • 特立尼达和多巴哥总理特立尼达和多巴哥总理,1956年至今担任特立尼达和多巴哥总理的有:阿根廷总统 · 安提瓜和巴布达总理 · 巴巴多斯总理 · 巴哈马总理 · 巴拉圭总统 · 巴拿马总统 · 巴西总统
  • 巴比·福雷巴比·福雷 (Bobby Flay)(1964年10月9日-),出生于美国纽约州的曼哈顿市,是美国的知名厨师。
  • 南岳衡山衡山,五岳之一,也称为“南岳”,南岳始封于唐虞,是古代中国帝王巡狩祭祀的地方,也是道教和汉传佛教的圣地之一。主景区全称“衡山风景名胜区”位于衡山县境内,现已划为南岳区,为衡阳