字符串搜索算法

✍ dations ◷ 2025-11-30 20:57:14 #字符串匹配算法

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

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

相关

  • 领鞭毛虫纲领鞭毛虫纲(学名:Choanoflagellate)是一种原生生物,是单细胞或群体。拥有一根鞭毛,形态类似于淡水海绵的群体,表面的酪氨酸激酶受体也类似于海绵,被认为是动物的姐妹群。领鞭毛虫的
  • 巫术巫术、法术(英语:witchcraft)是一种企图以超自然、神秘方式影响世界的方法。巫术曾被称为魔术或魔法,但与现在的魔术表演并不相同。在原始时代,人类对于自然界的认知与改造能力不
  • 放射性物质放射性或辐射性是指某元素的放射性同位素从不稳定的原子核自发地放出射线(如α射线、β射线、γ射线等)而衰变形成另一种同位素(衰变产物),这种现象称为放射性。衰变时放出的能量
  • 意大利电信集团意大利电信(意大利语:Telecom Italia)是意大利的电信公司,总部位于罗马。提供电话服务,移动通信服务和DSL数据服务。该公司成立于1994年,由数家国有电信公司合并而成,其中最重要的
  • 20132013年印度尼西亚APEC峰会全称亚太经合组织第二十一次领导人非正式会议(英语:THE 21st APEC ECONOMIC LEADERS' MEETING),是第24届亚太经合组织领导人年度会议。会议于2013年10
  • 耶尔森氏菌属耶尔辛氏菌属(学名:Yersinia)是肠杆菌目肠杆菌科的一个属。耶尔辛氏菌属内的细菌均为革兰氏阴性菌。这些细菌属于杆状菌,按异化类型分则属于兼性厌氧菌。该属内的细菌长达几微米
  • 尼泊尔行政区划尼泊尔全国在2015年采纳新宪法以后划为7个省。在采纳新宪法以前,尼泊尔划分为5个发展区,下辖14个专区(尼泊尔语:अञ्चल,IAST:añcal;英语:zone),专区又分为75个县(尼泊尔语:जिल्
  • 原鸟形龙原鸟形龙属(属名:Archaeornithoides)是兽脚亚目手盗龙形类恐龙的一属,生存于白垩纪晚期的蒙古国。1965年,一个波兰与蒙古国的古生物挖掘团队,在蒙古国的巴彦扎格(Bayn Dzak)发现一个
  • 康普顿康普顿(Compton)是美国加利福尼亚州洛杉矶县的一座城市,根据美国人口调查局2000年统计,共有人口93,493人,其中非裔美国人占40.31%、白人占16.71%。
  • 端川市端川市(朝鲜语:단천시/端川市 Tanchŏn si */?)位于朝鲜民主主义人民共和国咸镜南道,人口约360,000。有着丰富的矿产资源,主要为钴、镁、铁矿石等。其化学工业也较发达。交通方