字符串搜索算法

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

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

相关

  • span class=nowrapTbsub2/sub(SOsub4/sub)sub&g硫酸铽是一种无机化合物,化学式为Tb2(SO4)3。用硫酸溶解氧化铽(III),可以得到硫酸铽。
  • 白色脂肪白色脂肪组织(英语:White adipose tissue,缩写为WAT),或称称黄色脂肪组织、白色脂肪等,乃我们常指之脂肪组织,在部分哺乳类动物中呈白色,主要位于皮下、网膜、系膜等部位。该组织为
  • 存储器计算机存储器(英语:Computer memory)是一种利用半导体、磁性介质等技术制成的存储数据的电子设备。其电子电路中的数据以二进制方式存储,不同存储器产品中基本单元的名称也不一
  • 合成酶连接酶(英语:Ligase,或称连结酶和结合酶)是一种催化两种大型分子以一种新的化学键结合一起的酶,一般会涉及水解其中一个分子的团。一般连结酶催化以下的反应:或有时是:其中小阶的字
  • 博思艾伦汉密尔顿控股公司博思艾伦汉密尔顿控股公司(简称博思艾伦咨询公司、博思艾伦公司或博思艾伦)是个美国的信息技术咨询公司。其总部位于美国华盛顿哥伦比亚特区费尔法克斯郡弗吉尼亚州的泰森斯角
  • 绿色计算绿色计算指利用各种软件和硬件先进技术,将目前大量计算机系统的工作负载降低,提高其运算效率(如flop/watt指标),减少计算机系统数量,进一步降低系统配套电源能耗,同时,改善计算机系
  • 徐日昇徐日升(1645年11月1日-1708年12月25日),原名托马斯·佩雷拉(葡萄牙语:Tomás Pereira;英语:Thomas Pereira),字寅公,葡萄牙人,清康熙朝来华天主教耶稣会传教士。康熙十一年(1672年)先抵
  • 高斯光束在光学中,高斯光束(英语:Gaussian beam)是横向电场以及辐照度分布近似满足高斯函数的电磁波光束。许多激光都近似满足高斯光束的条件,在这种情况中,激光在光谐振腔中以TEM00波模(横
  • 圣安娜市圣安娜(Santa Ana /ˌsæntə ˈænə/)是美国加利福尼亚州南部橙县的首府,位于西南圣安娜河畔,为“洛杉矶-长滩-圣安娜”都会区的主要城市之一。
  • 朗格多克-鲁西永朗格多克-鲁西永(法语:Languedoc-Roussillon、加泰罗尼亚语:Llenguadoc-Rosselló)是法国南部一个旧大区,别称为“法国南部”(法语:Sud de France)。该大区南邻加泰罗尼亚与地中海。