字符串搜索算法

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

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

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

相关

  • 华尔街坐标:40°42′23″N 74°00′34″W / 40.70639°N 74.00944°W / 40.70639; -74.00944华尔街(英语:Wall Street)是一条位于美国纽约市下曼哈顿的狭窄街道,西起百老汇三一教堂,向东
  • 苏糖苏糖(英语:Threose,C4H8O4)在分类上属于丁糖与醛糖,从费希尔式的角度看,中间两个碳原子上的羟基在碳骨架的异侧。有机化学的习惯命名法中,使用“苏”或“苏式”("threo")表示相邻两碳
  • Ssub2/subBrsub2/sub二溴化二硫在室温下是一种红色液体,化学式为S2Br2。将溴和硫封闭于管内加热,再进行减压蒸馏可得二溴化二硫。高纯度的二溴化二硫可由溴化氢与二氯化二硫反应制得,其他溴化硫也
  • 牛津英文字典《牛津英语词典》(英语:Oxford English Dictionary,OED)是由牛津大学出版社出版的20卷词典,截至2005年11月30日,该词典收录了301,100主词汇,字母数目达3亿5千万个。词典亦收录了157
  • 黎元洪黎元洪(1864年10月19日-1928年6月3日),字宋卿,清末与中华民国政治家。生于湖北省黄陂县黎家河(今属大悟县),人称“黎黄陂”。清末加入海军,后担任新军协统,武昌起义后,担任湖北都督、中
  • 明宗元明宗和世㻋(蒙古语: ᠬᠦᠰᠡᠯᠡᠨ ᠬᠠᠭᠠᠨ,鲍培转写:küsele qaγan,西里尔字母:Хүслэн хаан;藏语:.mw-parser-output .uchen{font-family:"Qomolangma-Dunhuang",
  • 鱼鸟Angelinornis Kashin 1972 Colonosaurus Marsh, 1872c Plegadornis Wetmore 1962鱼鸟(Ichthyornis)是一种已经灭绝的鸟类,生存在白垩纪晚期(约在 95–83.5 百万年前)的北美洲,它们
  • 内湖清代采石场内湖清代采石场遗址位于台北市内湖区环山路136巷底,于清代及日治时期被称为北势湖采石场, 乃台北城筑城之官方采石场。 创建年代为清光绪八年(1882年),为供应台北城建设城墙之需
  • 烟台市博物馆烟台市博物馆,位于山东省烟台市芝罘区南大街61号,是烟台市属综合性博物馆,为正县级全额拨款公益文化事业单位。1958年6月18日,烟台市人民委员会文化科下发〔58〕烟文字第17号文
  • 吉姆·皮布尔斯菲利普·詹姆斯·埃德温·皮布尔斯(英语:Phillip James Edwin Peebles,1935年4月25日- ),出生于加拿大温尼伯,加拿大-美国物理学家和理论宇宙学家,普林斯顿大学阿尔贝特·爱因斯坦荣