字符串搜索算法

✍ dations ◷ 2025-12-06 22:34:01 #字符串匹配算法

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

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

相关

  • 糖(sugar)泛指各种可食用的带有甜味的晶体,有甜味、短链、可溶于水的有机化合物,许多会用在食品。糖在有机化学中属于糖类,由碳、氢及氧三种原子组成。单糖是结构较简单的糖,包括
  • 臀部臀部,又称尻、腚,俗称屁股、屎窟、箩柚(碌柚谐音)、箩噼、噼噼,台语亦作尻川(kha-tshng),是猿类和人类盆骨部分后方的浑圆部位。亦是人类用来承受坐力的部位。臀部由臀大肌和臀中肌
  • 士的宁番木鳖碱(英语:Strychnine),又称番木鳖碱,马钱子碱,又译士的宁,士的年(有时被错写成土的宁),是一种剧毒的化学物质,一般用来毒杀老鼠等啮齿类动物。对人类亦有剧毒(成人的致死量约为5mg/
  • 超导态超导体(superconductor),指可以在特定温度以下,呈现电阻为零的导体。零电阻和完全抗磁性是超导体的两个重要特性。超导体电阻转变为零的温度,称为超导临界温度,据此超导材料可以分
  • 湖州湖州市(吴语湖州音:Ghẽw Cieu),简称湖,古称乌程、吴兴,是中华人民共和国浙江省下辖的地级市,位于浙江省北部。市境东邻嘉兴市,南接杭州市,西界安徽省宣城市,北临太湖与江苏省无锡市、
  • 失去你的那一天大川大立数位影音股份有限公司《失去你的那一天》(英语:The Day I Lost U),2015年台湾偶像剧、由王传一、李千娜、陈奕、莫允雯、古斌、路嘉欣领衔主演。 于2015年5月底开镜,本剧
  • 被遗忘的国度被遗忘的国度(Forgotten Realms)是TSR公司设计的一个关于著名纸上角色扮演游戏龙与地下城的战役设定。在1980年代是游戏界称之为“金盒子”系列的主轴之一。由游戏设计者艾德
  • 萨尔茨堡州萨尔茨堡州(德语:Salzburg)是奥地利共和国的一个州,位于奥地利与德国的交界处,首府为萨尔茨堡。萨尔茨堡在神圣罗马帝国时期是其一个独立的大主教教区,直到1803年被作为赔偿割让了
  • 汉魏洛阳城汉魏洛阳故城位于今河南省洛阳市市区以东15公里,曾是东汉、曹魏、西晋、北魏的国都所在地,因隋炀帝在汉魏洛阳城西重新建隋唐洛阳城,因此又被称为汉魏洛阳故城。1961年被列为全
  • 药物和毒物的统一调度标准《药物和毒物的统一调度标准》(英语:Standard for the Uniform Scheduling of Medicines and Poisons,SUSMP)是澳大利亚政府药物管理局(英语:Therapeutic Goods Administration)出