字符串搜索算法

✍ dations ◷ 2025-12-05 18:27:24 #字符串匹配算法

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

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

相关

  • 联合国宪章《联合国宪章》(英文:Charter of the United Nations)是联合国建立的基础条约,它既确立了联合国的宗旨、原则和组织机构设置,又规定了成员国的责任、权利和义务,以及处理国际关系
  • 性行为 (消歧义)性行为可能指:
  • 意大利电信集团意大利电信(意大利语:Telecom Italia)是意大利的电信公司,总部位于罗马。提供电话服务,移动通信服务和DSL数据服务。该公司成立于1994年,由数家国有电信公司合并而成,其中最重要的
  • 可用意识时间可用意识时间(Time of useful consciousness,简称TUC)是指一个人在氧气供应不足的情况下所能够进行飞航任务的反应时间。这段时间是从氧气供应的中断或暴露在缺氧环境中开始
  • 地心吸力地球引力或地球重力是因地球本身的质量-地球质量而自然具有的引力。地球表面重力加速度的表示符号为g,近似地等于每平方秒9.8米或每平方秒32英尺,意即当忽略空气阻力时,一物体在
  • 拉链拉链是把两片织物暂时结合在一起的一种部件,常见于衣物、旅行箱、手袋、帐篷和睡袋等。拉链在制衣工业和服装中十分常见,它的用途包括了:拉链的基础为两条平行的窄布料,它们通过
  • 奥地利经济奥地利的经济特色之一是其施行于德国类似的社会市场经济。在2004年,奥地利是欧盟内第四富裕的国家。以购买力平价计算的话,人均GDP约27666欧元,仅次于卢森堡、爱尔兰和荷兰。维
  • 自由基加成反应自由基加成是在有机化学中涉及自由基的加成反应 。自由基加成可能是由二个自由基反应,也可能是一个自由基和非自由基反应。以下是自由基加成反应的基本步骤(也称为作为自由基
  • 周婕妤周婕妤(英文名:Rita,1986年12月2日-),台湾花式台球职业选手,外号“大眼妹”,2009年以未满23岁的年纪击败当时世界排名第一爱尔兰名将Karen Corr,并成为历届安丽杯史上最年轻冠军得主,
  • 奥斯卡·闵可夫斯基奥斯卡·闵可夫斯基(Oskar Minkowski 1858年1月13日-1931年7月18日)德国生物化学家、布雷斯劳大学教授,胰岛素的发现者。数学家赫尔曼·闵可夫斯基的哥哥、天天物理学家鲁道夫·