字符串搜索算法

✍ dations ◷ 2025-12-07 13:51:23 #字符串匹配算法

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

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

相关

  • 儿童医学小儿科(或称儿科)是现代医学的一个分支,专门医疗患病的婴儿、儿童及青少年。最大的年龄通常至青春期。一个受到这方面知识专门训练的医生被称作儿科医生。
  • 药物滥用物质滥用(英语:Substance abuse)广义上也被称为药物滥用(英语:drug abuse),药物滥用是指经常用于临床效力的处方药使用,但是滥用潜力和已知的反作用与不适当使用联系在一起,比如有镇
  • 花鼓戏花鼓戏为一种在中国南方分布广泛的戏曲剧种。花鼓戏是湖南、湖北、安徽、广东各地的花鼓戏、采茶戏、灯戏和杨花柳等剧种的统称,其曲调来源于民间小调如花腔、口子调、筒子腔
  • 色萨·米尔斯坦色萨·米尔斯坦(英语:César Milstein,1927年10月8日-2002年3月24日),出生于阿根廷布兰卡港的英国生物化学家。于1984年与尼尔斯·杰尼及乔治斯·克勒共同获得诺贝尔生理学或医学
  • 惯性在物理学里,惯性(英语:inertia)是物体抗拒其运动状态被改变的性质。物体的惯性可以用其质量来衡量,质量越大,惯性也越大。艾萨克·牛顿在钜著《自然哲学的数学原理》里定义惯性为:
  • 冨岳三十六景《富岳三十六景》,浮世绘画师葛饰北斋晚年的作品之一,属于浮世绘中的“名所绘”,为描绘由日本关东各地远眺富士山时的景色。初版只绘制36景,因为大受好评,所以葛饰北斋仍以《富岳
  • 狂躁街道传教者狂躁街道传教者(Manic Street Preachers),常被简称为狂躁者(The Manics)是一队来自英国威尔士的摇滚乐团,成立于1989年,他们是1990年代晚期英国最大的乐团。虽然他们在早期时的音乐
  • 洛根县洛根县(Logan County, Colorado)是美国科罗拉多州东北部的一个县,北邻内布拉斯加州。面积4,778平方公里。根据美国2000年人口普查,共有人口20,504人。县治斯特林 (Sterling)。成
  • 水鼬水鼬(mink)是美洲水鼬属(英语:Neovison)与部分鼬属物种的通称,为深色、半水生(英语:Semiaquatic)的肉食动物,包括美洲水鼬与欧洲水鼬两种现生物种与已灭绝的海貂。过去水鼬均属鼬属,但1
  • 类 (数学)在集合论及其数学应用中,类是集合(或其他数学物件)的搜集(collection),可以依所有成员所共享的性质被无歧定义。有些类是集合(例如由所有偶数构成的类),但有些则不是(如所有序数所构成