字符串搜索算法

✍ dations ◷ 2025-11-20 08:46:38 #字符串匹配算法

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

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

相关

  • 死亡焦虑死亡焦虑是由死亡想法引起的焦虑。 其一将死亡焦虑定义为当一个人想到死亡的过程,或者停止'存在'时,死亡焦虑被定义为"恐惧、忧虑或焦虑的感觉"。其二为死亡恐惧症(死亡恐怖症
  • 准性生殖准性生殖(英语:parasexual cycle)又称类有性生殖、拟有性生殖,是某些真菌特有的一种生殖机制,菌丝或酵母菌进行胞质融合与核聚变(英语:Karyogamy)后,不进行减数分裂,亦不形成子实体与
  • 第一次意大利独立战争意大利统一运动(意大利语:Risorgimento,意为“复兴”,故中文文亦有译为“复兴运动”)是19世纪至20世纪初期间,将意大利半岛内各个国家统一为意大利的政治及社会过程。1861年3月17
  • 舱外活动:2000年之后本列表包含了所有的2000年至2014年之间的太空行走;即所有宇航员完全或部分离开航天器的事件。舱外活动开始及结束时间均为协调世界时(UTC)时区。
  • 高雄海洋科技产业创新专区高雄海洋科技产业创新专区是中华民国经济部为达成“风力发电4年计划”政策与推动离岸风电产业,借重兴达渔港之潮差小、交通便利、学研单位资源丰富、支援产业健全等地利优势,
  • 阿拉斯加洋流阿拉斯加洋流是一股沿着美国阿拉斯加州海岸往北的太平洋温暖暖流,由北太平洋洋流因为北美洲海岸线的关系而被分出来。阿拉斯加洋流是一种表面流,是西风漂流的一股,在阿拉斯加湾
  • 煎蛋网截至2012年3月29日 (2012-03-29) 国际 6117 截至2012年3月29日煎蛋是一个中文团队博客,采用Wordpress程序,于2006年10月12日上线 。 其主要内容翻译自其他语言的网站 ,目的是
  • 甲二氯胂MDA MDCA二氯甲基胂,亦可简写为MD,是一种有机化合物,化学式为CH3AsCl2。它是一种无色、易挥发的液体,具有很强的毒性,是一种糜烂性毒剂,可作为化学武器使用。德国化学家于1917-191
  • 华格姆法兰西第一帝国总共损失41,250人 23,750人死伤总共损失37,500人 27,500人死伤瓦格拉姆战役(Battle of Wagram),又译华格姆战役,发生于1809年7月5日-7月6日。拿破仑在此场战役中
  • 第二次世界大战战后对德意志人的驱逐在第二次世界大战的后期及战争结束时候,数百万德意志公民(不论民族或是否与纳粹德国有联系)以及德意志裔人(不论国籍)被迫从其他欧洲国家迁徙回德国。受到影响的范围包括前德意志