字符串搜索算法

✍ dations ◷ 2025-11-23 21:40:37 #字符串匹配算法

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

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

相关

  • 毕达哥拉斯毕达哥拉斯(希腊语:Πυθαγόρας,前570年-前495年)是一名古希腊哲学家、数学家和音乐理论家,毕达哥拉斯主义的创立者。他认为数学可以解释世界上的一切事物,对数字痴迷到几近
  • 森永牛奶砷中毒事件森永牛奶砷中毒事件(日语:森永ヒ素ミルク中毒事件)是1955年(昭和30年)六月时以西日本为主的食物中毒事件。受害的婴幼儿在喝了森永乳业(日语:森永乳業)的奶粉后产生死亡以及其他食物
  • 安哥拉经济安哥拉经济为世界成长最快速的经济体之一,但在1975年至2002年的安哥拉内战破坏后,现今仍在重建中,虽然有大量的石油及天然气资源、钻石、水力蕴藏及耕地,但安哥拉依然贫困,有三分
  • 湖首大学湖头大学(英语: Lakehead University)是坐落在加拿大安大略省雷湾的一座小型公立研究型大学。除了雷湾的主校区外,还在安大略的Orillia有一分校区。学校始建于1946年,建校初以湖
  • 苏里南2019冠状病毒病苏里南疫情,介绍在2019新型冠状病毒疫情中,在苏里南发生的情况,苏里南为最后一个确诊的南美国家,也使南美洲成为继欧洲后第二个全区沦陷的大洲。2020年3月13日,苏
  • 法鼓山坐标:25°14′25.25″N 121°36′54.4″E / 25.2403472°N 121.615111°E / 25.2403472; 121.615111法鼓山(英语:Dharma Drum Mountain,缩写DDM;或Fagushan),为中华民国的大乘佛教
  • 硫磺岛硫磺岛(日语:硫黃島/いおうとう Iō Tō */?)是位于西太平洋小笠原群岛的火山岛,因岛上覆盖着一层由于火山喷发造成的硫磺而得名。行政区划隶属于日本东京都小笠原村。该岛位于
  • 包新第包新第(1911年-2000年1月24日),英文名:Sandys Bao,中华民国政治人物,“台糖”重要人物,台湾制糖工业奠基人物之一。又作包新弟,浙江鄞县人。大清宣统三年(1911年)生于浙江省宁波府鄞县
  • 1924年卡尔文·柯立芝 共和党卡尔文·柯立芝 共和党1924年的美国总统大选是1924年11月4日星期二举行的第35届四年一次的总统选举。在三方竞选中,时任共和党总统卡尔文·柯立芝赢
  • 古今注《古今注》是晋代崔豹作品。凡三卷,“是一部对古代和当时各类事物进行解说诠释的著作”。《古今注》有三卷,分为八个部分解释各类事物:“本书对于我们了解古人对自然界的认识、