字符串搜索算法

✍ dations ◷ 2025-11-26 17:19: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,所以另有更快速的算法。

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

相关

  • 器质性病变疾病是生物在一定原因的损害性作用下,因自稳调节紊乱而发生的异常生命活动过程,是特定的异常病理情形,而且会影响生物体的部分或是所有器官。一般会解释为“身体病况”(medical
  • 超级人瑞超级人瑞是指年纪达到110岁或以上的人瑞。依据欧洲的统计数据,仅有1%的百岁人瑞能存活至110岁。而且,仅有0.2%的超级人瑞能存活至115岁。迄今只有21位无争议的人类案例年龄活
  • 四氧化三铁氧化亚铁铁 (ferrous ferric oxide) ferroso ferric oxide 氧化铁(II,III) 磁铁矿 (magnetite) 氧化黑铁 (black iron oxide) lodestone 铁锈 (rust) 氧化铁(II)二铁(III)
  • 亲核体亲核体,又叫亲核基、亲核试剂(英语:Nucleophile,意思为原子核的喜好物)是一个基本的有机化学概念,指具有亲核性的化学试剂,可用:Nu表示。它用来衡量一个试剂给电子能力的强弱。一般
  • 不死之身长生不老,指寿命长而不会衰老。相近的辞汇还有长生不死(在安全无外力状况下拥有无限的寿命,但依旧会老化)、不老不死(在安全无外力状况下不会衰老与死亡)、不朽(Immortality)与永生(
  • 台湾之星台湾之星电信股份有限公司(英语:Taiwan Star Telecom Corporation Limited,缩写:T STAR,简称台湾之星),是中华民国五大电信业者的其中一家,前身是2000年4月成立的联邦电信股份有限公
  • 蜂窝蜂房或者蜂窝是蜜蜂所建巢穴里的构造,由众多正六边形的蜂蜡巢室所组成。蜂房里除了蜜蜂之外,还有它们的幼虫,并储存蜂蜜和花粉。而马蜂亚科(Polistinae)和胡蜂亚科(Vespinae)的胡蜂
  • 新桥街道新桥街道是中华人民共和国广东省深圳市宝安区下辖的一个街道办事处,名称取自辖区内重要村落——新桥村。辖区总面积28平方公里,下辖新桥、新二、上星、上寮、黄埔、万丰、沙企
  • 财务结算中心中国人民解放军军徽中央军委后勤保障部财务结算中心,位于北京市,隶属中央军委后勤保障部。2016年深化国防和军队改革前,中国人民解放军总后勤部设有中国人民解放军总后勤部财务
  • 中央行政区 (莫斯科)中央行政区(俄语:Центра́льный администрати́вный о́круг,罗马化:Tsentralny administrativny okrug)是莫斯科的12个行政区划之一,于1918年1