字符串搜索算法

✍ dations ◷ 2025-12-06 14:49:16 #字符串匹配算法

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

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

相关

  • 猪哥亮猪哥亮(闽南语:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",Helvetica,Arial,sans-serif} 豬哥
  • 饼干曲奇(美式英文:Cookie)是一种小而扁平和甜的烘焙或煮熟的食物。它通常含有面粉,糖和某种油或脂肪。也有可能包括其他原料,如葡萄干,燕麦,巧克力片,坚果,果酱等。在美国与加拿大解为细
  • 梅西百货公司梅西百货(Macy's)是美国的一个连锁百货公司,其旗舰店位于纽约市先驱广场,1924年在第7大道开张时曾被宣传为“世界最大商店”。该公司还有2个全国性旗舰店,分别设在旧金山的联合广
  • 丹麦行政区划丹麦行政上分为五个大区(丹麦语:regioner;单数:region)以及98个自治市。这些大区是2007年新年设立的,是2007丹麦市政改革的一部分,取代了传统的13个郡(amter)。同时,较小的自治市(kommu
  • 祝融星祝融星(又称火神星;法语:Vulcain;英语:Vulcan)是一个假设在太阳与水星之间运行的行星,这个19世纪的假设被爱因斯坦的广义相对论排除。祝融星的中文名称来源于中国上古神话人物火神
  • 车笼埔断层保存园区国立自然科学博物馆车笼埔断层保存园区(简称车笼埔断层保存园区)是位于台湾南投县竹山镇的一座由国立自然科学博物馆营运的地震断层研究保存园区,全区座落九二一地震遗迹之上,沿
  • 宗室载萼宗室载萼(1825年-1900年),载萼,字兰舫,号瓣香,爱新觉罗氏,清朝政治人物、进士出身。道光二十九年,乡试中举。后授宗人府理事官。光绪三年,任杀虎口监督。光绪二十年,任内阁侍读学士,后改
  • 伤齿龙科蜥鸟龙科 Saurornithoididae Barsbold, 1974 ?沼泽鸟龙科 Elopterygidae Lambrecht, 1933 ?原鸟形龙科 Archaeornithoididae Elzanowski & Wellnhofer, 1992伤齿龙科(Troodonti
  • 斯基台人斯基台人(古希腊语:Σκύθης或Σκύθοι)也译为斯基泰人、斯基提亚人 、西古提人、叔提雅人、西徐亚人或塞西亚人,希腊古典时代在欧洲东部、东欧大草原至中亚一带居住与
  • M8装甲车M8装甲车是美国福特汽车于二战时期生产的六轮传动装甲车,主要装备欧洲和远东地区美军及英军,英军把M8取名为“灰狗”(Greyhound)。直至2006年,一些第三世界国家仍有M8服役。1941