字符串搜索算法

✍ dations ◷ 2025-11-29 08:41:09 #字符串匹配算法

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

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

相关

  • 联邦紧急救援署联邦紧急救援署(英语:Federal Emergency Relief Administration,缩写为FERA)的前身是由胡佛总统在1932年创建的紧急救援署(Emergency Relief Administration,ERA)。1933年5月,国会通
  • 玻色-爱因斯坦凝聚态玻色–爱因斯坦凝聚(Bose–Einstein condensate)是玻色子原子在冷却到接近绝对零度所呈现出的一种气态的、超流性的物质状态(物态)。1995年,麻省理工学院的沃夫冈·凯特利与科罗
  • 雅库特地区雅库特共和国(俄语:Республика Саха (Якутия),罗马化:Respublika Sakha (Yakutiya))是俄罗斯联邦主体之一,属于远东联邦管区。1922年4月27日,苏联在俄罗斯苏维
  • 安哥拉经济安哥拉经济为世界成长最快速的经济体之一,但在1975年至2002年的安哥拉内战破坏后,现今仍在重建中,虽然有大量的石油及天然气资源、钻石、水力蕴藏及耕地,但安哥拉依然贫困,有三分
  • 北北基宜北北基宜或简称北基宜,是台湾北部新北市、台北市、基隆市、宜兰县四县市的共同生活圈合称,其范围等于台湾日治时期台北州的辖区范围。也包含基隆北海岸(东北角)等地区,台湾本岛的
  • span class=nowrapDy(NOsub3/sub)sub3/sub/span硝酸镝是一种无机化合物,化学式为Dy(NO3)3。硝酸镝可以将氧化镝、氢氧化镝或碳酸镝溶于硝酸得到:所得溶液经过小心蒸发可以得到水合硝酸镝,其中六水合物最常见。水合硝酸镝受热
  • 国家运动训练中心国家运动训练中心(全衔为行政法人国家运动训练中心,简称国训中心、国训、左训中心)是中华民国国家体育代表队选手(国手)的训练基地,为教育部主管的行政法人机构。1976年启用时称“
  • 发育里程碑儿童发展阶段 或 儿童发育的阶段(英语:Child development stages) 指的是儿童发育理论(英语:child development)认为孩子在不同年龄阶段应该具备的基本先天能力(又被称为孩子发育的
  • 反棱柱反棱柱(Antiprism)是由两个相同边数多边形平行基底和侧面的三角形所组成的一个多面体。反棱柱的对偶多面体是偏方面体(Trapezohedron)。在一个边长为a、高为h的n角反棱柱里: 顶点
  • 季后赛附加赛或称play-offs、季后赛、postseason和/或决赛在体育联赛在进行中常规赛由顶级竞争对手来决定联赛冠军还是类似的荣誉。 根据联盟的不同,季后赛可能是单场比赛,一系列比