字符串搜索算法

✍ dations ◷ 2025-09-08 18:13:51 #字符串匹配算法

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

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

相关

  • 莫里斯莫里斯或莫瑞斯可以指:
  • 高甲硫胺酸血症高甲硫胺酸血症是一种遗传病,其会导致血液中的甲硫胺酸堆积,但大部分患者的MAT酵素还有少许功能。少部分的患者被发现有低肌肉张力、心智迟缓及神经脱髓鞘。此遗传病的遗传率
  • 男男男男性行为,是指男性跟男性一同从事的性行为,而不论从事者的性倾向或性别认同为何。《金赛报告》的著者于1948年指出37%的男性受访者有过至少一次的同性性行为经历。证据显示
  • 举重举重是一项历史悠久的运动,将杠铃以双手举过头,以举起的杠铃重量为胜负依据。男子举重在1896年举行的第一届奥林匹克运动会时便已列为正式项目。虽然早在1987年世界举重锦标赛
  • Opera68.0.3618.24(2020年3月25日,​3天前​(2020-03-25))Opera是由Opera软件为个人电脑推出的网页浏览器,用于Microsoft Windows、macOS和Linux操作系统。Opera软件为纳斯达克上市的挪
  • 地形雨降水是指在大气中冷凝的水汽以不同方式下降到地球表面的天气现象。大气中的水汽几乎全部集中于对流层中,温度越高,大气可以容纳的水汽含量就越多,反之就越少。一定温度下,当空气
  • 荣总荣民医院或荣民总医院,可以指下列中华民国以服务民众为成立宗旨的医院,均由国军退除役官兵辅导委员会成立与管理:
  • 希望号希望号(英语:Omid,波斯语:امید‎,意为“希望”)是伊朗首颗自行研制的人造卫星。伊朗国家电视台报道说2009年2月2日成功发射了一颗用于科研和通讯的数据处理人造卫星。伊朗自行
  • 罗老号运载火箭罗老号(朝鲜语:나로호/羅老號,Naro-1/2/3)又名KSLV-I(Korea Space Launch Vehicle-I),为韩国第一种运载火箭。因在韩国南部全罗南道高兴郡外罗老岛罗老宇航中心发射而得名。罗老号为
  • 新英格兰镇新英格兰镇(英语:New England town)是美国新英格兰当地政府组成的基本单元。在美国其他的州中并没有相对应的单元,概念上大概与“市民镇区”(civil township)相同,但却是“团体组织