字符串搜索算法

✍ dations ◷ 2025-05-15 22:09:47 #字符串匹配算法

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

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

相关

  • 神经生物学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学神经科学(英语:neuroscience),又称神经生
  • 恋鼻恋鼻(英语:Nose fetishism、nose partialism或nasophilia)是一种对人的鼻子产生特定的偏好的恋物癖形式,这包括认为特定的外观(例如形状或大小)或特定区域(例如鼻梁或鼻孔)是具性吸
  • 恐龙生理学恐龙生理学一直是个高度争议的领域,尤其是体温调节。在恐龙的早期研究中,恐龙被重建为大型、四足、慵懒的爬行动物。自19世纪中期之后,科学界对于恐龙的生活方式、代谢、体温调
  • 雅克萨战役雅克萨战役,是17世纪中后期清朝和俄国之间因边境冲突而爆发的一场战争,俄方及西方称之为俄清边境冲突(俄文:Русско-цинский пограничный конфли
  • 圣伯多禄锁链堂圣伯多禄锁链堂(意大利语:San Pietro in Vincoli)是意大利罗马市的一座罗马天主教次级圣殿与司铎级枢机领衔教堂 ,现任司铎级枢机为美国籍的唐纳德·乌尔。教堂以米开朗基罗的梅
  • 伦敦大火纪念碑伦敦大火纪念碑,一般称为 纪念碑,是位于伦敦市的罗马多立克柱式石柱,邻近伦敦桥的北端,树以纪念伦敦大火。纪念碑位于纪念碑街与费雪街山丘上,62米高,并且距离1666年9月2日伦敦大
  • 哥伦打洛哥伦打洛省(印尼语:Provinsi Gorontalo)也叫呼伦打洛省(印尼语:Provinsi Hulontalo)是印度尼西亚的一个省,位于苏拉威西岛北部的米纳哈萨半岛中部,首府位于哥伦打洛。哥伦打洛省成立
  • 赣粤高速公路赣粤高速公路江西段共分为樟树市至泰和、泰和至赣州、赣州至定南三段建设,全线按高速公路四车道标准设计,总投资30.08亿元。是赣粤高速公路向北的延伸路段,起于樟树市昌傅镇,经
  • 广东省人民代表大会常务委员会?年规定:印章直径?厘米,中央刊国徽,由?制发。广东省人民代表大会常务委员会是广东省人民代表大会的常设机构,于1979年12月29日根据第五届全国人民代表大会第二次会议所通过的《
  • 心 (脏腑)在传统中医学里的脏象学说中,心是五脏六腑中最主要的部分,在五行中属火,为神之居,血之主,脉之宗。心与生物学中的心脏大致上是同一个构造。型态描述上,《医宗必读》形容心为“心象