字符串搜索算法

✍ dations ◷ 2025-11-30 02:26:10 #字符串匹配算法

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

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

相关

  • 疑病症疑病症(英语:Hypochondriasis),也作疑病性神经症(Hypochondriacal neurosis)、虑病症,是指对自身出现的一些身体状况作出不合实际的解释,担心自己身患一种极为严重的疾病。疑病症患
  • 国防部长国防部长,总统制与双首长制的国家可简称防长;君主制的国家可简称防相,是近现代国家政府中国防部门的领导者,负责管理国防和军事行政(日语:軍政 (行政)),对国家元首或政府首脑负责。
  • 约翰·查尔斯·菲尔兹约翰·查尔斯·菲尔兹(英语:John Charles Fields,1863年5月14日-1932年8月9日),加拿大数学家。他设立了菲尔兹奖,颁给成就杰出的数学家。菲尔兹生于加拿大安大略省哈密顿市一皮革店
  • 1419年重要事件及趋势重要人物
  • 魁北克协定魁北克协定(英语:Quebec Agreement)是英国和美国在第二次世界大战期间签署的一项关于联合建造核武器的协定,由温斯顿·丘吉尔和富兰克林·德拉诺·罗斯福于1943年8月19日在魁北
  • 萤火《萤火》是熊宝贝乐团的第二张单曲,于2008年5月31日发行。饼干(主唱·贝斯手)在访问中提到,此张EP是一个关于“失去、追寻,与希望”的故事,如果灰色是一部曲的话,那萤火就是二部曲
  • 乙未事变乙未事变, 又称乙未之变或乙未八月之变,是指1895年日本人杀害朝鲜王朝国王高宗之明成皇后闵兹暎的事件。日本通过乙未事变铲除试图通过沙俄对抗日本的明成皇后后,恢复金弘集亲
  • 查莫罗语查莫罗语(Chamorro 或 Chamoru),又称查莫洛语,是西太平洋的马里亚纳群岛上查莫罗人使用的语言,属于“马来-波利尼西亚语族”(Malayo-Polynesian languages)。查莫罗语在关岛是官方
  • 二氧化钒二氧化钒是一种无机化合物,化学式为VO2,是深蓝色的固体。二氧化钒是两性氧化物,溶于非氧化性酸,形成蓝色的钒酰离子(英语:vanadyl ion)VO2+,溶于碱形成棕色的2−,在高pH下形成4−。VO
  • 法国城市列表以下所列为人口超过50,000的法国城市(市区):括弧内为2010年人口数: