字符串搜索算法

✍ dations ◷ 2025-12-07 05:03:40 #字符串匹配算法

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

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

相关

  • 土霉素土霉素 Oxytetracycline也称为“地霉素”或“氧四环素”,是第二个被发现的广谱抗菌的四环素类抗生素。土霉素是由Finlay等人在辉瑞实验室附近分离到的链霉菌Streptomyces rim
  • 亨尼巴病毒属亨尼巴病毒属(学名:Henipavirus),包括尼帕病毒(又译尼巴病毒、立百病毒)(Nipah virus)和亨德拉病毒(Hendra Virus,HeV)。1999年于东南亚被发现的会引发立百脑炎的新型病毒,也会造成人类
  • 奥古斯丁希波的奥古斯丁,罗马天主教会官方称希波的奥斯定(拉丁语:Augustinus Hipponensis;英语:Augustine of Hippo)或圣奥思定(英语:Saint Augustine 或 Saint Austin),俗称圣奥古斯丁。原称
  • 少尿症寡尿(英文:Oliguria),指排尿的量比正常人少。寡尿的定义因年龄差异而有所不同。寡尿通常是异常肾功能的最早征兆。
  • 祈使句祈使语气(英语:imperative mood)是表达直接命令或请求的语气。它还用来表示禁止、请求或任何其他类的劝告。英语的祈使语气是简单地使用动词不定式来形成的。be 是其非限定形式
  • 日耳曼民族日耳曼人(拉丁语:Germani,德语:Germanen)是一些语言、文化和习俗相近的民族(部落社会)的总称。这些民族从公元前2千年到4世纪生活在欧洲北部和中部。在五世纪时的民族大迁徙使日耳
  • 测序测序(sequencing)是遗传学和分子生物学中,测序意味着确定无分支的生物聚合物的一级结构(有时被误称为一级序列)。测序结果是一个符号化的线性描述,简明地总结了被测序的分子的大部
  • 比荷卢经济联盟欧洲(深灰)  —比荷卢联盟(前称比荷卢经济联盟,也经常称呼为荷比卢)是由3个相邻的君主立宪西欧国家:荷兰、比利时和卢森堡组成的联盟,为低地国。原名Benelux是一混成词,由三国的名
  • 张钧衡张钧衡(1872年-1927年),字石铭,号适园主人,吴兴(今湖州)南浔镇人。其先世是安徽休宁人,康熙中迁至浙江南浔镇。世代经商,以丝绸及盐业致富。张颂贤孙。张宝庆的独生子。张静江是其堂弟
  • 肥沃月湾新月沃土或称肥沃月湾(英语:Fertile Crescent),是指西亚、北非地区两河流域及附近一连串肥沃的土地,包括累范特、美索不达米亚和古埃及,位于今日的以色列、西岸、黎巴嫩、约旦部分