字符串搜索算法

✍ dations ◷ 2025-11-25 14:22:39 #字符串匹配算法

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

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

相关

  • 骨外科骨科即骨外科,也被称为矫形外科(英语:Orthopedic surgery 或 Orthopaedics,美式英文:Orthopedics)是使用手术和非手术的方法来治疗肌肉骨骼系统创伤、脊柱损伤、运动损伤、退行性
  • 歇后语歇后语,换言之,就是“歇”去“后”半段之“语”,这就是说要把真正想表达的意旨藏起来,不直接明说,改以幽默的方式来呈现一段话语的前半段,然后,再让听者或读者就意义的关联性,或是语
  • 园艺学园艺学(英语:Horticulture)为农业的分支学问,涉及了与植物培育有关的艺术、科学、科技、商业等领域。主要培育对象包括了水果、蔬菜、坚果、种子、药草、真菌、藻类、花朵等食用
  • 史上领土第三大帝国以下是历史上最大帝国的一些列表。历史上有很多领土广大、人口众多的帝国。而在这些帝国中,又可以分成两类:帝国及殖民帝国。普通帝国对征服地区直接统治,多为连接性扩张领土;而
  • 阿斯旺阿斯旺(阿拉伯语:أسوان‎),埃及南部城市,阿斯旺省首府,位于尼罗河东岸,人口约20万,著名古城、旅游景点和贸易中心。阿斯旺是世界上最干燥的地方之一,自2006年5月13日以来,阿斯旺
  • 太上太上老君,简称老君,全称“一炁化三清太清居火赤天仙登太清境玄气所成日神宝君道德天尊混元上帝”,又称“太上混元老君、梵形神宝玄真降生道德天尊”,又称道德天尊、混元老君等。
  • X-射线衍射X光散射技术或X射线衍射技术(英语:X-ray scattering techniques)是一系列常用的非破坏性分析技术,可用于揭示物质的晶体结构、化学组成以及物理性质。这些技术都是以观测X射线穿
  • 罗马尼亚国王卡罗尔一世卡罗尔一世(Carol I), 全名卡尔·埃特尔·弗里德里希·泽菲林努斯·路德维希·冯·霍亨索伦-西格马林根(Karl Eitel Friedrich Zephyrinus Ludwig von Hohenzollern-Sigmari
  • 冈瓦纳在地质学中,冈瓦那大陆(英语:Gondwana,/ɡɒndˈwɑːnə/,或Gondwanaland),也称冈瓦纳古陆、南方大陆,是存在于新元古代至侏罗纪前期(约5.73亿至1.8亿年前)的超大陆,它是从罗迪尼亚大
  • 国家纪念区国家纪念区(英语:National Monument)是美国国家公园体系之下的一种公园,多数由美国国家公园管理局负责管理。跟美国国家公园的不同在于国家纪念区的成立只需要美国总统单方面宣