字符串搜索算法

✍ dations ◷ 2025-11-30 09:06:07 #字符串匹配算法

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

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

相关

  • 崇祯崇祯(1628年—1644年)是明朝末代皇帝明思宗朱由检的年号,也是明朝的最后一个年号。朱由检于天启二年(1622年)被其兄长明熹宗册封为信王。天启七年(1627年)明熹宗驾崩,信王朱由检即位
  • 生物医学生物医学(英语:Biomedical sciences or Biomedicine)是医学的分支,负责将生物技术和其他自然科学理论应用于临床实践。 生物医学主要运用生物学和生理学的知识。 生物医学与健
  • Mg(BHsub4/sub)sub2/sub硼氢化镁是一种无机化合物,有强还原性,受热分解。硼氢化镁由硼氢化锂和氯化镁为原料,在加热且无溶剂的条件下制备。硼氢化镁在453K为六方结构,具有P61空间群(a = 10.047(3)Å, c
  • 姐夫姻亲指基于婚姻关系而生之亲属型态,一方配偶与他方配偶之亲属间,因双方缔结婚姻后,成为相互具法律上亲属关系的情况。《中华民国民法》第969条规定,包括配偶的血亲、血亲的配偶
  • 尿液检查尿液分析,又称为尿常规,是针对尿液标本所进行的一组医学检验项目,是医学诊断过程中最为常用的方法之一。尿液分析是历史最为悠久的医学检验方法之一,可以反映肾脏和泌尿道等方面
  • 胶粘剂黏着剂也称胶黏剂、黏合剂、胶水,在1942年被哈利·库弗博士(英语:Harry Coover)发明。指将两个物体黏附在一起的材料,根据所要黏合材料的特性(主要是表面特性,如粗糙度),使用不同的黏
  • 二十一酸二十一酸(Heneicosylic acid)是一种拥有21个碳原子的长链饱和脂肪酸,化学式为CH3(CH2)19COOH.不饱和脂肪酸
  • 口内炎口腔溃疡,由于发病部位、局部症状的不同,用语又称口内炎、口疮、口舌疮、口破、口疳、口疡、嘴破、痱滋等,是指口腔内之唇、舌颊及上腭等软组织处的粘膜,发生单个或多个黄白色圆
  • 张人骏《张人骏家书日记》张人骏(1846年2月24日-1927年2月8日),字千里,取“人中骏马,驰骋千里”之意,号安圃,晚号湛存居士,直隶遵化丰润县(今河北省唐山市丰润区)大齐坨村人,中国清朝末年政治
  • 天然水水资源包括经人类控制并直接可供灌溉、发电、给水、航运、养殖等用途的地表水和地下水,以及江河、湖泊、井、泉、潮汐、港湾和养殖水域等。水资源是发展国民经济不可缺少的重