字符串搜索算法

✍ dations ◷ 2025-12-09 23:37:19 #字符串匹配算法

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

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

相关

  • 威廉·琼斯威廉·琼斯(英语:William Jones,1746年9月28日-1794年4月27日),英国语言学和东方学家,生于伦敦。琼斯毕业于哈罗公学和牛津大学。1774年取得律师资格。1783年任孟加拉最高法院法官,
  • 细胞呼吸呼吸作用,又称为细胞呼吸(Cellular respiration),是生物体细胞把有机物氧化分解并转化能量的化学过程,也称为释放作用。无论是否自养,细胞内完成生命活动所需的能量,都是来自呼吸作
  • 巨人传《巨人传》(法语:La vie de Gargantua et de Pantagruel),是法国文艺复兴时期的重要文学作品,由法国作家弗朗索瓦·拉伯雷创作,共有五集,1532至1564年陆续出版。此书具体反映出中古
  • 吉尔曼艾尔佛列·古曼·吉尔曼(英语:Alfred Goodman Gilman,1941年7月1日-2015年12月23日),美国药学和生物化学家。因发现G蛋白与马丁·罗德贝尔一起分享1994年诺贝尔生理学或医学奖。19
  • 巴伐利亚夺权巴伐利亚苏维埃共和国(德语:Bayerische Räterepublik)是德国十一月革命期间在巴伐利亚短暂出现的 一个国家。1919年4月6日由德国独立社会民主党、无政府主义者和巴伐利亚农民
  • 闵考斯基时空在数学物理学中,闵可夫斯基空间(或称闵考斯基时空)是指由三维欧几里德空间与时间组成的四维流形,其中任意两个事件之间的时空间隔与所依照的惯性系无关。尽管赫尔曼·闵可夫斯基
  • 蒋介石政府蒋中正政府是指在蒋中正担任中华民国总统和中国国民党总裁期间的中华民国政府,承继于之前蒋中正担任国民政府军事委员会委员长及国民政府主席的国民政府,在此时期内的政府各部
  • 情陷布拉格《情陷布拉格》(The Unbearable Lightness of Being),又译作《布拉格的春天》、《布拉格之恋》,是根据米兰·昆德拉1984年出版的小说《生命中不能承受之轻》于1988年改编成的电
  • 高罗佩高罗佩(荷兰语:Robert Hans van Gulik,1910年8月9日-1967年9月24日),字笑忘,号芝台、吟月庵主,荷兰汉学家、东方学家、外交官、翻译家、小说家。1910年,生于荷兰聚特芬(Zutphen)。1915
  • 国家飞弹防御系统美国的国家导弹防御(英语:United States national missile defense)指美国的用于在整个国家范围抵挡外来的洲际弹道导弹的反弹道导弹系统,目前计划已经改名为陆基中途防御系统。