字符串搜索算法

✍ dations ◷ 2025-11-06 20:26:34 #字符串匹配算法

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

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

相关

  • 伊比库斯伊比库斯(英语:Ibycus),约活动于公元前6世纪前后。古希腊诗人之一,为赫雷基乌姆的抒情诗人。效劳于萨摩斯的波吕克拉泰斯的宫廷。他的作品最初集为七卷本,主要是合唱歌曲、颂词和
  • 克里斯·埃文斯克里斯·埃文斯(英语:Chris Evans,1981年6月13日-),原名克里斯多佛·罗伯特·埃文斯(英语:Christopher Robert Evans),是一位美国演员和电影导演。埃文斯在《神奇四侠》(2005年)和续集《
  • Nikon尼康株式会社(英文:Nikon,日语:株式会社ニコン)简称尼康(英文:Nikon),是一家日本大型光学仪器制造商,也是三菱集团的关系企业之一。“Nikon”此企业名称,为原始之商号“日本光学工业”(N
  • 幂运算(英语:Exponentiation),又称指数运算,是数学运算,表达式为 b n {\displa
  • 外生菌根菌根(希腊语:μυκός, mykós, "fungus",和ρίζα, riza, "root",,英语:mycorrhiza,复数形式mycorrhizae或mycorrhizas)指的是维管束植物的根与真菌组成的共生关系体。 它菌
  • 燕南园坐标:39°59′23″N 116°18′32″E / 39.989665°N 116.308782°E / 39.989665; 116.308782 燕南园位于北京大学燕园校区南部。东邻百年纪念讲堂,西至原北京大学校医院和勺园
  • 艾哈迈德扎希艾哈迈德扎希·哈米迪(马来语:Ahmad Zahid bin Hamidi,1953年1月4日-)是马来西亚马来民族统一机构(巫统)政治人物,2015年—2018年在总理纳吉布领导的国阵政府下担任副总理。他在2013
  • 量化 (数理逻辑)在语言和逻辑中,量化是用量词指定一个谓词的有效性的广度的构造,就是说指定谓词在一定范围的事物上成立的程度。产生量化的语言元素叫做量词。结果的句子是量化的句子,我们称我
  • 自由落体自由落体运动是指只受重力作用(不存在空气阻力的理想状态)的均匀加速度运动过程。 运动过程中重力势能与动能之和遵守机械能守恒定律。在地球上相同位置与相同高度,自由落体的
  • 1789年法国三级会议1789年三级会议是由法兰西国王暨纳瓦拉国王路易十六于1789年1月24日召开的法兰西王国的三级会议。这次三级会议由大约1200名议员组成,在选举省他们依照1789年1月24日的通用