字符串搜索算法

✍ dations ◷ 2025-12-08 22:35:29 #字符串匹配算法

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

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

相关

  • 氮循环氮循环(英语:Nitrogen cycle)是描述自然界中氮单质和含氮化合物之间相互转换过程的生态系统的物质循环。空气中含有大约78%的氮气,占有绝大部分的氮元素。氮是许多生物过程的
  • 载体蛋白载体蛋白(英语:carrier protein)简称“载体”,是参与离子、小分子或高分子跨越生物膜进行运输的一类多回旋折叠蛋白质。载体蛋白都是跨膜蛋白,它们能在协助扩散或主动运输过程中
  • 西塞罗马库斯·图利乌斯·西塞罗(Marcus Tullius Cicero,前106年1月3日-前43年12月7日,其名在拉丁语中读为(音译为基凯罗),西塞罗为英文音译,发音: /ˈsɪsᵻroʊ/),是罗马共和国晚期的哲学家
  • 奇恒之腑脏腑,是中医对内脏的总称,通称五脏六腑。根据《素问‧五脏别论篇》,“脏”指的是人体内的五脏,即:肝、心、脾、肺、肾(加上心包即为六脏),主要功能为生化和蓄存精气;以及六腑,即:胆、小
  • 临床微生物学医学微生物学(clinical microbiology)是的一个医学分支,主要关注传染病的预防、诊断和治疗。此外,科学这一领域的研究微生物对健康的改善各种临床应用。有四种微生物是会导致传
  • 性别选择人类的性别选择的普遍是为确保“家族平衡”。现代科学技术许可选择婴孩性别,有几个可实行时间阶段:胚胎植入前,胚胎植入后,或在分娩时实行。胚胎植入前的性别选择,主要有两个方案
  • 国际航空运输协会国际航空运输协会(英语:International Air Transport Association,缩写IATA)是全球航空公司的同业公会,也是非政府组织。290家航空公司成员分别来自近120个国家,其定期国际航班客
  • olorolor是一块绑在公山羊身上的带毛牛皮(英语:cowhide)或是塑胶布,外形类似裙子。肯亚饲养山羊的人在会在干旱时期在公山羊身上穿戴olor,避免公山羊在此时间让母山羊交配而怀孕。
  • 应天府应天府是明朝设置的府,为明代初期首都,后改留都。辖区即今南京市,及句容市、溧阳市范围。元朝时,为集庆路,属江浙行省。至正十六年(1356年、太祖丙申年),朱元璋攻占集庆路,三月改集庆
  • 白静白静(1983年6月4日-2012年2月28日),锡伯族,出生于辽宁省调兵山市,毕业于中央戏剧学院表演系,中国大陆女演员。白静早年毕业于中央戏剧学院2002级表演系。 因多次出演音乐剧而闻名,后