字符串搜索算法

✍ dations ◷ 2025-12-11 00:58: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,所以另有更快速的算法。

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

相关

  • 性高潮控制性高潮控制(英语:Orgasm control、edging、peaking、surfing)是一种性技巧,即维持长时间的性刺激但不达到性高潮。男性进行性高潮控制时,被刺激者将长时间地直接接受性刺激。在此
  • 颤藻目颤藻目(学名:Oscillatoriales),为一类原核生物,归于蓝菌门(Cyanophyta)蓝菌纲(Cyanobacteria)。
  • 鲭鱼鲭亚目为辐鳍鱼纲鲈形目的其中一个亚目。特点是前颌骨固着于上颌骨,不能向前伸出。背鳍鳍棘正常。臀鳍前无游离鳍棘。有或无皮肤血管系统。鱼体大多纺锤形,多是一些快速游泳的
  • 国际科学理事会 (ICSU)国际科学理事会(英语:International Council for Science),简称国际科联(ICSU),旧称国际科学联合会理事会(International Council of Scientific Unions),是世界上最大的非政府组织及
  • 攻打蔚山釜山镇 – 多大浦 – 东莱城 – 尚州 – 忠州弹琴台 – 玉浦 – 泗川 – 临津江 – 唐浦 – 唐项浦 – 闲山岛 – 龙仁 – 梨峙 – 平壤 – 釜山浦 – 北关
  • 寺院诸法度寺院诸法度(日语:寺院諸法度/じいんしょはっと Jiinshohatto)是江户时代德川幕府对佛教教团制定的诸法度之总称。但是,非固定的称呼,文献上有“诸宗寺院法度”(諸宗寺院法度)、“诸
  • 中国精神疾病分类方案与诊断标准中国精神障碍分类与诊断标准,简称CCMD。现行的分类与诊断标准为《中国精神疾病障碍与诊断标准第3版(CCMD-3)》,由卫生部科学研究基金资助,通过41家精神卫生机构负责对24种精神
  • 威廉·何奥子爵第五代何奥子爵威廉·何奥,KB,PC(英语:William Howe, 5th Viscount Howe,1729年8月10日-1814年7月12日),英国军官及政治家,美国独立战争期间曾任北美英军总司令。何奥生于1729年,家世
  • 加拿大无毛猫斯芬克斯猫(Sphynx)又称加拿大无毛猫。这种猫是由于基因突变而产生的品种。体重3.5到7公斤,肌肉发达,毛发稀疏,皮肤皱褶似羚羊皮。头部棱角分明。微呈三角型。眼大呈柠檬状,多数呈
  • 威廉·诺德豪斯威廉·道布尼·“比尔”·诺德豪斯(英语:William Dawbney "Bill" Nordhaus,1941年5月31日-),生于美国新墨西哥州阿尔伯克基,美国经济学家,耶鲁大学经济学斯特林教授,前美国经济学会主