字符串搜索算法

✍ dations ◷ 2025-11-19 12:04:45 #字符串匹配算法

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

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

相关

  • 生命科技生物技术(英语:biotechnology),又称为生物科技,指利用生物体(含动物,植物及微生物的细胞)来生产有用的物质或改进制程,改良生物的特性,以降低成本及创新物种的科学技术。根据不同的工
  • 安哥拉内战安哥拉人民解放运动获胜安人运 西南非洲人民组织 民族之矛 古巴(1975-91)安盟 安解阵 卡宾达飞地解放阵线 南非(1975-89) 扎伊尔(1975)安哥拉内战(葡萄牙语:Guerra Civil Angolan
  • 奥义书奥义书(梵语:उपनिषद्,转写:Upaniṣad,直译:近坐,引申为“秘密传授”)古印度一类哲学文献的总称,是广义的吠陀文献之一。虽然奥义书由吠陀发展而来,因而经常被理解为婆罗门教与
  • 法式舌吻深吻,又称湿吻、舌吻或法式接吻,是一种浪漫而性感的接吻方式。通常是接吻时舌头放进对方口中,与对方舌头相互接触。深吻会碰触伴侣的嘴唇、舌头及口,这些部分对碰触相当敏感,因此
  • 波莫纳波莫纳 (Pomona, California)是美国加利福尼亚州洛杉矶县的一个城市,位于该县东部边缘。2000年人口149,473人。 也是洛杉矶县第五大的城市,(仅次于洛杉矶,长滩,格兰岱尔和圣塔克拉
  • 南乔治亚和南桑威奇群岛专员埃德温·波特·阿罗史密斯(Edwin Porter Arrowsmith)第一任高级专员 M·贝克·贝茨 (M. Baker Bates)南乔治亚岛和南桑威奇群岛专员是英国君主在英国海外领地南乔治亚和南桑威
  • SOCCSKSARGENSOCCSKSARGEN(或SoCCSKSarGen)是菲律宾的一个大区,位于菲律宾棉兰老岛的中部,编号XII。面积14,373km²,人口2,598,210。SOCCSKSARGEN旧称中棉兰老大区,在加入一个原属南棉兰老大区
  • 缟獴(M. mungo)Viverra mungo Gmelin, 1788缟獴(学名:Mungos mungo),又称非洲獴、斑纹灰沼狸、横斑獴,是缟獴属下两个物种的其中之一,主要分布在非洲中部和东部。成年的缟獴可长至0.3—0.4米,尾长
  • 新城病新城病(英文:Newcastle disease)是一种禽鸟传染病,由新城病病毒引致。此病毒在禽鸟间有很高的传染性和死亡率,现时没有治疗方法,但可以透过疫苗和消毒措施以减少其爆发之可能性。
  • 硫化铯硫化铯是一个无机盐类,化学式为Cs2S,在水溶液中水解呈强碱性。在空气中时,硫化铯会放出有臭鸡蛋气味的有毒硫化氢气体。和钠类似,可以使铯和硫在氨中或萘的存在下于四氢呋喃中反