字符串搜索算法

✍ dations ◷ 2024-09-21 01:21:20 #字符串匹配算法

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

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

相关

  • 国家侦查局美国国家侦察局(National Reconnaissance Office,NRO),位于美国维吉尼亚州,是美国的16个情报机构之一;负责为美国政府设计、组装并发射侦察卫星。 并协调、收集和分析从中央情报
  • 病患患者,又称病人、病者和病患,是指医疗服务的接受者,大多用来指罹患疾病、或身体受到创伤,而需要医生和护理人员进行治疗的人;动物如遇到相同状况,也可以患者称之。但是对于不用接受
  • 安全护目镜护目镜(英文:Goggles),运动、工作时所配戴的眼镜,目的是保护眼睛。大部分的运动都是在户外,而户外的阳光往往是造成眼睛病变的主因,所以长期暴露在阳光下的运动员开始配戴太阳眼镜
  • 纸草纸草可能指以下条目:
  • 伤痕文学伤痕文学泛指中国大陆于1970年代末期“拨乱反正”时期开始的一种文学创作思想(潮流),是中国大陆在“文化大革命”结束后最先出现的一种文学现象,为1980年代中国大陆的文学思潮的
  • 飞思卡尔飞思卡尔(英语:Freescale Semiconductor)是美国的半导体生产厂商。飞思卡尔于2004年由原摩托罗拉的半导体部门组建。摩托罗拉于2003年10月宣布剥离半导体部门,第二年7月,飞思卡尔
  • 清华大学深圳国际研究生院清华大学深圳国际研究生院(英语:Tsinghua Shenzhen International Graduate School),简称清华深研院(英语:Tsinghua SIGS),是清华大学的直属研究院、唯一的异地办学机构,与深圳市政府
  • 教育评估教育评估是通过评估的模式,对知识, 技能, 态度和信仰等进行归档的评估方式,可以对个人学习者,也可以对学习社区(班级、学校、小组等)、可对教育机构甚至整个教育系统。根据季度
  • 姜文姜文(1963年1月5日-),本名姜小军,河北唐山人,中国电影演员和导演。曾担任澳门科技大学人文艺术学院电影艺术研究院院长,第八、九、十届全国政协委员。1980年考入中央戏剧学院表演系
  • 茼蒿茼蒿(学名:Glebionis coronaria),别名春菊、打某菜、茼蒿菜、艾菜、皇帝菜,是一种菊属植物,原产于地中海南岸。茼蒿在欧洲原本是庭园中美丽的观叶植物,但在宋朝引进中国后,却成为餐