字符串搜索算法

✍ dations ◷ 2025-04-25 19:19:49 #字符串匹配算法

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

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

相关

  • RNA核糖核酸(英语:Ribonucleic acid),简称RNA,是一类由核糖核苷酸通过3',5'-磷酸二酯键聚合而成的线性大分子。自然界中的RNA通常是单链的,且RNA中最基本的四种碱基为A(腺嘌呤)、U(尿嘧
  • β-变形菌纲详见细菌分类表β-变形菌网(学名:Betaproteobacteria)是变形菌门中的一纲,与γ-变形菌关系最近。医学导航:病菌细菌(分类)gr+f/gr+a(t)/gr-p(c/gr-o药物(J1p、w、n、m、疫苗)
  • 洗手洗手,是为了清除尘土、污垢和微生物而清洁手的行为。洗手可以使用水、其他液体或者肥皂来完成,也可以不使用这些东西。某些地区没有自来水,人们可以打井来使用井水,也可以将雨水
  • 孙膑兵法竹简本——1972年在山东临沂银雀山汉墓出土,为汉初抄本。 1975年文物出版社出版的普及本及线装本。 1985年文物出版社出版的精装本《银雀山汉墓竹简》第一辑中收录。与1975年
  • 海峡海峡是夹在两片陆地之间,联系两个海或洋的水区,它一般深度较大,水流较急。海峡是自然形成的,人造的联海道称为运河。如海峡两岸有比较多的港口或码头,又称之为港。大多数海峡是在
  • 犹太圣法哈拉卡(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey A
  • 台州片台州话,属于吴语台州片,以黄岩话为代表。在发音和用词、语法等方面和都与现代标准汉语(普通话)有较大差别。但台州话的变化也很多,甚至各个县市之间的发音也有较大差异。 广义上
  • 上古汉语上古汉语指的是周朝至汉朝时期的汉语,继承原始汉语发展而来,其语音依照演进又可细分先秦音系与汉代音系。因为上古汉语的构拟不建立在历史比较语言学的基础上,因汉字非拼音文字
  • 韩国体育韩国体育是韩国文化的重要部分。跆拳道是源于韩国的一种集强身健体,防身自卫和心灵修养为一身的搏击武术,被称为韩国的国技。目前已经成为奥运会的比赛项目。韩国的传统体育运
  • 绿豆粉绿豆粉,铜仁市区称锅巴粉,是贵州北部(包括旧思南府、铜仁府、石阡府地区)及周边地区的一种特色粉条食品,常见的食用方法为用整张面皮裹酱料食用或者水煮后加汤食用。绿豆粉原料是