字符串搜索算法

✍ dations ◷ 2025-11-24 10:53:31 #字符串匹配算法

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

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

相关

  • 被取代的科学理论此条目列出曾获得广泛共识的理论及学说,但被现今科学认定为现实的不完全或错误的解读。因此伪科学和边绿科学等未曾获广泛共识的理论不算在内。另外也不包括李森科主义等部分
  • 发型发型指头发的修剪、整形,或戴上装饰品所整理的头发型式。通常为了审美、宗教、社交、职业或显示社会地位的原因,人类会对头发进行修剪和设计,达到不同的样式,而令到有不同的视觉
  • 爱德华·卡尔文·肯德尔爱德华·卡尔文·肯德尔(英语:Edward Calvin Kendall,1886年3月8日-1972年3月4日),美国化学家。由于发现肾上腺皮质激素及其结构和生理效应,他与菲利普·肖瓦特·亨奇、塔德乌什·
  • 趋向性趋性(英语:taxis,或称为趋向性)是一生物(或细胞)天生的行为反应,指其对一指向性刺激(由特定方向给的刺激),而会有趋进(正趋性)或远离(负趋性)刺激源的动作。趋性和向性不同,生物的
  • 2011年加拿大人口普查2011年加拿大人口普查是加拿大统计局于2011年5月10日进行的一次详尽的加拿大全国人口统计。统计部每隔五年会进行一次全国人口普查。是次人口普查乃全国第十五次按《1867年
  • 弗雷德里克·巴特莱特弗雷德里克·巴特莱特爵士(英语:Sir Frederic Charles Bartlett,1886年10月20日-1969年9月30日),英国心理学家,剑桥大学实验心理学教授(从1931年到1951年退休)。1944 年,他和肯尼思·
  • 异丁苯丙酸布洛芬(英语:Ibuprofen,商品名:芬必得、普罗芬),是一种非类固醇消炎药(NSAID),用来止痛,退烧和消炎。可用于治疗经痛、偏头痛,和类风湿性关节炎。大约60%的人在使用任意一种NSAID后症状
  • 海陆丰地区海陆丰,在中国国内,今日是指广东省汕尾市的别称。中华人民共和国1988年建立下辖海丰县、陆丰县及陆河县的汕尾地级市,所以海陆丰亦泛指汕尾市。但在台湾或海外,“海陆丰”的概念
  • 萨尔塔坐标:24°47′S 65°25′W / 24.783°S 65.417°W / -24.783; -65.417萨尔塔(西班牙语:Salta)位于阿根廷西北部安第斯山脉脚下,是萨尔塔省的首府,人口464,678(2001年)。
  • 麦哲伦费南多·德·麦哲伦(葡萄牙语:Fernão de Magalhães;西班牙语:Fernando de Magallanes;1480年10月17日-1521年4月27日),葡萄牙探险家,为西班牙政府效力探险。1519年-1521年率领船队首