字符串搜索算法

✍ dations ◷ 2025-02-23 17:03:47 #字符串匹配算法

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

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

相关

  • 倒睫睫毛倒刺(英语:Trichiasis)是医学上表明睫毛生长方向异常的术语,其症状表现为眼睫毛向眼球生长并接触到角膜或结膜。倒睫可能是由感染、炎症、免疫系统疾病、先天性缺陷(如眼睑发
  • 鞘脂类代谢鞘脂(英文:Sphingolipids或glycosylceramides),是一种含有鞘氨醇碱的骨架的脂类,是脂肪族胺醇包含鞘氨醇。他们在1870年代的脑部提取物被发现和神话斯芬克斯来命名。医学导航:遗传
  • 水力发电水力发电(英文:Hydropower)是运用水的势能转换成电能的发电方式,其原理是利用水位的落差(势能)在重力作用下流动(动能),例如从河流或水库等高位水源引水流至较低位处,流的水流推动轮机
  • 魏国魏国,自名为
  • 阿涅德吉布阿涅德吉布(Anedjib)(也被称为厄涅吉布、阿德吉布或阿德吉耶布,意为“拥有勇敢之心的人”或“其心即安宁”)是古埃及第一王朝的第五位法老。自远古流传下来的史料中关于他的记载
  • 间质干细胞间充质干细胞(mesenchymal stem cell, MSC),泛指一类存在于骨髓、脂肪组织等位置的一系列能够贴附在塑料表面生长、具有一定分化潜能的细胞群。根据国际细胞治疗协会2005年提出
  • 1120年重要事件及趋势重要人物
  • 内贾德马哈茂德·艾哈迈迪-内贾德(波斯语:محمود احمدی‌نژاد‎,转写:Mahmūd Ahmadinezhād,发音:  ( 发音),1956年10月28日-)是伊朗第6任总统,同时是伊朗保守派政治联盟伊斯
  • 垄断性竞争垄断性竞争(英语:monopolistic competition),或称为独占性竞争,一种不完全竞争(Imperfect competition)市场的形式之一。最早由美国经济学家爱德华·钱柏林,在1933年的著作《垄断性
  • 肺 (脏腑)肺为五脏之一;根据经络、脏象学说,肺的功能是: