字符串搜索算法

✍ dations ◷ 2025-11-27 06:56:17 #字符串匹配算法

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

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

相关

  • SnS硫化亚锡是一种无机化合物,化学式为SnS。它出现在罕见的硫锡矿中。硫化亚锡可由单质直接化合得到,为灰色晶体。如果将硫化氢通入Sn2+(如氯化亚锡)溶液中,可以得到暗棕色沉淀,为水
  • 甲胺磷甲胺磷(Methamidophos),是一种有机磷化合物,通常用作农药,在台湾的商品名为达马松、在中国大陆的商品名为多灭灵。工业品为黄色粘稠液体,易溶于水、醇、丙酮等溶剂,不溶于石油醚,遇
  • 环境地质学环境地质学是环境科学的一个分支,研究人类和地理环境之间的关系,尤其侧重于研究人类活动对地理环境的影响。环境地质学研究包括:环境地质学的研究要运用地球化学和矿物学的方法
  • 萝沙丽亚·伦巴多罗沙丽亚·伦巴多(意大利语:Rosalia Lombardo,1918年12月-1920年12月),是意大利西西里岛的一名女婴,2岁时因肺炎而死亡。伦巴多夭折后,家人基于对她的思念,花钱请西西里巴勒莫市的医
  • 墨西哥高原墨西哥高原(西班牙语:Altiplanicie mexicana)是一个占据了墨西哥中部和北部大部分面积的干旱半干旱高原。平均海拔约1,825米(5,988英尺),从北部的美墨边境一直延伸到南部的跨墨西
  • 黑光灯黑光灯又称紫外线灯或伍德灯(Wood's lamp),是发射长波紫外线(UV-A)和少量可见光的灯,又叫做UV-A 灯, 黑光灯有深紫色的过滤材料,在电灯泡上或者在分开的玻璃过滤器中,用来过滤可见
  • 蜉蝣目长鞘蜉蝣亚目 Schistonota 短鞘蜉蝣亚目 Pannota.mw-parser-output ruby.zy{text-align:justify;text-justify:none}.mw-parser-output ruby.zy>rp{user-select:none}.mw-pa
  • 约翰·杨约翰·瓦茨·杨(英语:John Watts Young;1930年9月24日-2018年1月5日)是一位美国国家航空航天局(NASA)的退休宇航员,曾于1972年4月21日执行阿波罗16号任务时登月,成为了第九个踏上月球
  • 夏洛特的网参数所指定的目标页面不存在,建议更正成存在页面或直接建立下列一个页面(建立前请先搜寻是否有合适的存在页面可以取代):《夏洛特的网》(英语:Charlotte's Web)是一位美国作家E·B
  • 膀胱过动症过动性膀胱(Overactive bladder,简称OAB),又称为膀胱过动症(Overactive bladder syndrome),急迫性尿失禁;欲望性尿失禁(Urge incontinence),经常会有急切的想去排尿的症状,且会对个人的