字符串搜索算法

✍ dations ◷ 2025-12-04 08:02:51 #字符串匹配算法

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

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

相关

  • 菌株分型(strain)是生物学分类使用的概念。指病毒的毒株。例如,不同的流感毒株的感染性不同。细菌或真菌的菌株。是具有不同基因型并能稳定遗传的亚型。植物学与农学的品系,指源自共
  • 普罗迪罗马诺·普罗迪(意大利语:Romano Prodi,1939年8月9日-),意大利政治家,曾经两度出任意大利总理,曾经担任欧盟委员会主席。普罗迪从政前曾经在博洛尼亚大学担任教授多年。2011年11月16
  • 包谷酒包谷酒即一种用包谷(玉米)作为原料的蒸馏酒,因为玉米成本低,所以在中国农村非常流行,有时也被称为玉米白酒。包谷酒一般多为家酿。
  • LINE1LINE1(也称作L1或LINE-1)是DNA转座子长散在核元件(Long interspersed nuclear elements,LINEs)的一种,L1约占人类基因组的17%。在人类基因组中,大部分的L1都是失活的,但仍保持着反转
  • 李季伦李季伦(1925年3月15日-),中国微生物学家。河北乐亭人。1948年毕业于国立中央大学生物系。中国农业大学生物学院教授。1995年当选为中国科学院院士。李季伦于1925年3月15日出生于
  • 阴茎折断阴茎折断指的是覆盖阴茎海绵体的白膜其中之一或两者全部破裂的情况。病因是阴茎勃起后遭到剧烈的打击,有时也会伴随着尿道阻断或阴茎背部神经、静动脉血管受损。阴道性交、肛
  • 郭为藩郭为藩(1937年9月3日-),出生于台湾台南市,省立台南一中毕业后,以大学联考乙组师大第一名入学,毕业于社会教育学系、教育研究所,教育部公费留考出国留学,获法国巴黎大学特殊教育博士,英
  • 东惠提尔东惠提尔(英语:East Whittier)是位于美国加利福尼亚州洛杉矶县的一个人口普查指定地区。东惠提尔的座标为33°55′28″N 117°59′20″W / 33.92444°N 117.98889°W / 33.9244
  • Windows 2000Windows 2000(简称Win2K)是一个独占式、可中断运行、具有图形用户界面(GUI)和商业导向的操作系统。Windows 2000可以运作在单处理器系统或者多处理系统(SMP)上,是属于微软Windows N
  • 猫的报恩猫的报恩电影海报《猫的报恩》(日语:猫の恩返し,中国大陆、台湾、新加坡译作《猫的报恩》,港澳地区译作《猫之报恩》)是吉卜力工作室2002年推出的一部动画电影,片名叫做《猫的报恩