字符串搜索算法

✍ dations ◷ 2025-11-22 09:55:46 #字符串匹配算法

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

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

相关

  • 人文科学人文科学(英语:Human science),对于由人类产生的各种现象,进行的各种科学研究与科学解释。在这个领域中研究的主题,包括各种与人类相关的经验,活动,社会建构等。其目的在于阐明与扩
  • 瑞博西利瑞博西利(英语:Ribociclib)商品名击癌利(KISQALI)是一种CDK4/6抑制剂类型的乳腺癌药物,由Astex和诺华制药研发。可使用的对象为:贺尔蒙接受体阳性、HER2阴性患者,以及停经后晚期乳腺
  • 精英主义精英主义(英语:Elitism)是从现实主义出发来理解和阐释政治与社会的结构及其发展的一种理论,认为应该由少数具备知识、财富与地位的社会精英,来进行政治决策,主导社会走向。其同义
  • 莫希科省莫希科省(葡萄牙语:Província de Moxico)位于安哥拉中东,与比耶省、库安多古班哥省、南伦达省等省份及刚果民主共和国及赞比亚相邻。
  • 乌德勒支乌得勒支(荷兰语:Utrecht)是荷兰第四大城市和市镇,为荷兰乌得勒支省人口最多的城市,同时也是该省的省会。其为兰斯台德地区最东边的城市,也是荷兰第四大城市,2009年人口超越300,030
  • ð̠浊齿龈擦音是辅音的一种。和此音对应的国际音标符号会因为此音是否有咝音还是无咝音而有所改变:吴语中的属有咝音,据邪俟船子音而定,均属阳调。浊齿龈有咝音的特征:英语中有此音
  • 梵蒂冈银行宗教事务银行(意大利语:Istituto per le Opere di Religione)又名梵蒂冈银行,是一间位于梵蒂冈的私人银行,并不对外开放,只负责管理梵蒂冈的金融资产。此银行由教宗庇护十二世于19
  • 辅脂酶n/an/an/an/an/an/an/an/an/an/a辅脂酶(Colipase) 是一种蛋白质辅酶,可提升胰脂酶(英语:lipase)的酵素活性。本蛋白的前体前辅脂酶(procolipase)由胰腺所分泌,此时并没有酵素活性。前
  • 大陆封锁大陆封锁 (法语:blocus continental,英语:continental system)是拿破仑在1806年11月21日在柏林启动的对英国的经济封锁政策,该政策于1814年结束。拿破仑意图使用经济战的手段使英
  • 楚菜楚菜又称湖北菜、荆菜。楚菜的起源,从屈原在《楚辞》里的两个篇章:“招魂”、“大招”里可得知,因为这两个篇章,记载楚宫佳宴包含20余种楚地名食,为中国历史上最早有用文字来记