字符串搜索算法

✍ dations ◷ 2025-12-08 15:12:18 #字符串匹配算法

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

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

相关

  • 早期羊膜囊破裂早期羊膜囊破裂(英语:premature rupture of membranes,简称PROM)也称为胎膜早破,是指在分娩之前发生的羊膜囊破裂。若在分娩前18至24小时就出现的早期羊膜囊破裂,称为加长早期羊膜
  • 维苏威火山维苏威火山(Vesuvio)是欧洲的一座活火山,位于意大利南部那不勒斯湾东海岸,同世界名城那不勒斯相距不过20公里。海拔1,281米(4,203英尺)。维苏威在公元79年的一次大喷发,摧毁了当时
  • 纳米技术 (期刊)纳米技术(英语:Nanotechnology),是一份由英国物理学会出版社(英语:IOP Publishing)出版的学术期刊,实行同行评审,每周出刊。该刊涵盖纳米技术的所有领域。根据2015年汤森路透的期刊引
  • 妊娠期糖尿病妊娠期糖尿病(gestational diabetes mellitus,简写成GDM)是指原先没有糖尿病症状的女性,在怀孕时出现高血糖的症状,妊娠糖尿病不一定会有明显症状,不过会增加妊娠毒血症、忧郁症的
  • 泛性恋泛性恋、泛性向(法语:Pansexualité | 英语:Pansexuality)或全性恋(法语:Omnisexualité | 英语:Omnisexuality)是一种无论对象的生理性别或性别认同为何,皆可能对其产生身体吸引或爱
  • 梵蒂冈教廷图书馆梵蒂冈宗座图书馆(拉丁语:Bibliotheca Apostolica Vaticana)是圣座的官方图书馆,一般简称为梵蒂冈图书馆。它于1475年建立,位于梵蒂冈城的梵蒂冈博物馆旁。其为世界上手抄本收藏
  • 园区网络园区网络(英语:Campus network,缩写CAN)是一个在有限的地理区域相互连接的局域网组成的 网络(交换器、 路由器)和传媒体(光学纤维、5类电缆等等)几乎由园区承租人/所有人(企业、大学
  • 泰国银行坐标:13°46′06″N 100°30′07″E / 13.768335°N 100.50208°E / 13.768335; 100.50208泰国银行(泰语:ธนาคารแห่งประเทศไทย,简称BOT)系泰王国之中央银行,总
  • 糍粑糍粑是中国的一种民间传统食品,是糍、打糕的一类,广泛分布于南方地区和少数北方地区如广东北部、福建、广西、贵州、四川、云南、重庆、湖北、湖南、江西、广东连州、上海、江
  • 二氧化镤二氧化镤是一种无机化合物,由氧和镤组成,化学式为PaO2,是黑色结晶,可由氢气还原五氧化二镤制得。由于最稳定的镤231Pa半衰期为32760年二氧化镤能被制备、保存。在氧气中燃烧镤能