字符串搜索算法

✍ dations ◷ 2025-12-05 11:46:15 #字符串匹配算法

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

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

相关

  • 气管炎气管炎(英语:Tracheitis),是指一类病发于气管的炎症。虽然气管通常被认为是下呼吸道的一部分,在ICD-10中,气管炎被分类于“急性上呼吸道感染”。细菌气管炎是气管的细菌感染,并且能
  • 药用鼠尾草药用鼠尾草(学名:Salvia officinalis),《中国植物志》作“撒尔维亚”,是唇形科鼠尾草属的一种芳香性植物。常绿性小型亚灌木,有木质茎,叶子灰绿色,花蓝色至蓝紫色。原产于欧洲南部与
  • 阿德里安·彼得·伯德阿德里安·彼得·伯德爵士(英语:Sir Adrian Peter Bird,CBE FRS FRSE,1947年7月3日-),英国遗传学家,爱丁堡大学布坎南遗传学讲座教授及惠康细胞生物学研究中心研究员。伯德的研究集
  • 喷射客机喷气式客机列表收录已正式交付到客户的民用喷气式客机。航空史 · 飞行器(制造商) · 飞行器发动机(制造商) · 旋翼机(制造商) · 机场 · 航线 · 博物馆民用飞机(启始客户) · 喷
  • 沈保根沈保根(1952年9月1日-),中国磁学和磁性材料专家。中国科学院物理研究所研究员。生于浙江平湖。1976年毕业于中国科学技术大学物理系。现任中国科学院磁学国家重点实验室主任,中国
  • 郑弘仪郑弘仪 (1961年12月28日-),台湾嘉义县水上乡人,媒体工作者、节目主持人,政治立场亲绿。现今主要主持节目有《新闻挖挖哇》、《宝岛全世界》及《郑知道了》。郑为台湾资深的媒体工
  • 车臣人和印古什人的强制流放扁豆行动,是1944年2月23日起苏联因车臣人和印古什人在第二次世界大战期间于北高加索叛乱进行的强制人口转移活动,由苏联内务部首脑贝利亚执行,车臣-印古什苏维埃社会主义自治共
  • 大卫·阿罗拉大卫·阿罗拉(英语:David Arora,1952年10月23日-),美国真菌学家、博物学家与作家。他是两本最有名蕈类鉴定书籍,《蘑菇揭秘》(Mushrooms Demystified)与《All That the Rain Promises
  • Taxaceae红豆杉科是松柏目下的一个科,其中包括7个属,约30种植物。红豆杉科物种多是分枝的小乔木和灌木。是常绿树种,叶螺旋状排列,呈线形至披针形,底面有淡绿色或白色的气孔带。雌雄异株,
  • 世界记忆遗产名录世界记忆计划(英语:Memory of the World Programme)是一项联合国教科文组织倡议发起的项目,始于1992年,项目下的“世界记忆名录”以保障文献,避免集体性遗忘、忽视、被时间和气候