字符串搜索算法

✍ dations ◷ 2025-11-18 13:03:18 #字符串匹配算法

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

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

相关

  • 氮丙环类氮丙环,也称环乙亚胺、氮杂环丙烷、吖丙啶、环乙胺、氮丙啶、乙烯亚胺,是氮原子取代环丙烷的一个碳原子形成的杂环化合物,分子式为C2H5N。氮丙环在室温下是无色易流动的液体,有
  • 左洛复舍曲林(英语:Sertraline)(商品名:左洛复、彼迈乐等)是一种选择性5-羟色胺再吸收抑制剂(SSRI)类抗抑郁药,1991年由辉瑞制药公司发明。舍曲林主要用于治疗成人重度抑郁症(MDD),也用来治疗
  • 泰山坐标:25°03′32″N 121°25′51″E / 25.058864°N 121.4308111°E / 25.058864; 121.4308111泰山区位于台湾新北市西边的市辖区,前身为台北县泰山乡,属于台北都会区的卫星城
  • 杰马尔帕夏艾哈迈德·杰马尔帕夏(土耳其语:Ahmet Cemal Paşa,1872年5月6日-1922年7月21日)是奥斯曼帝国的政府官员与知名军事人物。杰马尔出生于希腊米蒂利尼。毕业于奥斯曼帝国战争学院。
  • 撒赫尔地区萨赫勒(阿拉伯语:الساحل‎;英语、法语:Sahel;阿姆哈拉语:ሳህል,意为“(撒哈拉的)海岸”)是非洲北部撒哈拉沙漠和中部苏丹草原地区之间的一条总长超过5,400公里、最宽可达1,000
  • 伦敦通勤带伦敦通勤带(London commuter belt)是指一个包括伦敦及伦敦附近拥有众多通勤至伦敦人口的卫星城的大都会区,又称伦敦大都会区(London metropolitan area)或东南大都会区(Southeast
  • 米德尔塞克斯大学米德尔萨克斯大学(英语:Middlesex University,缩写:MU,MDX),是一座位于英国伦敦北部亨顿的公立大学,因位于英国历史上的郡米德尔塞克斯边境而得名。密德萨克斯大学最早是由北伦敦两
  • 王凯王凯(1982年8月18日-),湖北武汉人,中国大陆男演员。毕业于中央戏剧学院表演系2003级本科班。出道作品为2006年电视剧《寒秋》,曾因在电视系列《丑女无敌》(2008 - 2010)中的角色“陈
  • 高位宫东川王(209年-248年),高句丽第11任君王,历史或称为东壤王,名忧位居,幼名郊彘,《三国志》称其名为位宫,227年-248年在位。《三国志·魏书》中记载,东川王为太祖王的曾孙。‘其曾祖名宫,生
  • 亚美尼亚国家图书馆亚美尼亚国家图书馆(亚美尼亚语: Հայաստանի Ազգային Գրադարան)是亚美尼亚的国家图书馆,位于该国首都耶烈万,1832年创建。现在的建筑则建造于1939年,由亚