字符串搜索算法

✍ dations ◷ 2025-12-11 13:11:12 #字符串匹配算法

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

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

相关

  • 多汗症多汗症,是一种症状,系指身体在必要性的调节体温的范围时,产生异常增加发汗的症状。好发于手、足、腋窝(即腋下),在日常生活中被认为是有过度发汗的疾病患者。。
  • 基辅大公这个条目是关于古罗斯国家基辅公国的统治者。更多情况请参见主题条目:
  • 纳米电子技术联盟校际微电子中心(Interuniversity Microelectronics Centre,缩写 imec),又称比利时微电子研究中心,是一个专注于奈米科技的世界领先研究中心,其总部位于比利时鲁汶,并在荷兰恩荷芬、
  • Mgsub2/subSn锡化镁是一种二元金属间化合物,化学式为Mg2Sn。锡化镁可由相应化学计量比的单质共熔得到:锡化镁是浅蓝色的晶体,属立方晶系,空间群Fm3m,晶胞参数a = 0.67594 nm, Z = 4,具有CaF2结
  • 弹性碰撞弹性碰撞是碰撞前后整个系统动能不变的碰撞。弹性碰撞的必要条件是动能没有转成其他形式的能量(热能、转动能量),例如原子的碰撞。动能守恒:动量守恒:通过
  • 日本狼日本狼(学名:Canis lupus hodophilax)是一种已灭绝的狼亚种,曾经在日本大量繁衍,分布于本州、四国、九州,之后被人大量猎杀,最后在1905年灭绝。另一亚种北海道狼和日本狼是近亲,但亦
  • 吉姆·洛威尔小詹姆斯·“吉姆”·阿瑟·洛弗尔(James 'Jim' Arthur Lovell, Jr.,1928年3月25日-)曾是一位美国国家航空航天局的宇航员,以作为指令长将严重受损无法登月的阿波罗13号成功带回
  • 南锥体南锥体(西班牙语:Cono Sur, 葡萄牙语:Cone Sul)指的是南美洲位于南回归线以南的地区。一般人们所说的南锥体包括了阿根廷、智利和乌拉圭三个国家。有时也会包括巴拉圭和巴西的南
  • 春节攻势美国等国正式介入之后美国撤出至南越灭亡新春攻势(越南语:Sự kiện Tết Mậu Thân/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming
  • 戚雅仙戚雅仙(1928年2月-2003年1月27日),原名戚爱英,浙江余姚人,生于上海,中国越剧表演艺术家。越剧中“戚派”的创立者。1928年2月,出生于上海,家境清贫。1941年,入上海陶叶剧团科班,学习越