字符串搜索算法

✍ dations ◷ 2025-06-28 19:25:05 #字符串匹配算法

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

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

相关

  • 延胡索酸酶结构 / ECOD延胡索酸酶(或称延胡索酸水合酶)是一种催化延胡索酸(即反丁烯二酸)以及苹果酸之间水合/脱水的可逆反应。延胡索酸酶可分为线粒体内以及细胞质中两种,其中线粒体延
  • 猪圆环病毒病猪圆环病毒(Porcine circovirus,PCV)是一种单链DNA病毒(class II),无囊膜,单股环状。病毒衣壳呈20面体对称结构,直径约17 nm。猪圆环病毒属圆环病毒科圆环病毒属。猪圆环病毒是在
  • 磷的同位素磷(原子量:30.973762(2))共有23个同位素,其中31P是稳定的,其他都具有放射性。30P是人类获得的第一种人工放射性同位素。备注:画上#号的数据代表没有经过实验的证明,只是理论推测而
  • 邻苯二甲酸单苄酯邻苯二甲酸单苄酯(英语:Monobenzyl phthalate,缩写MBzP,IUPAC名为2-苯甲氧基羰基苯甲酸,2-phenylmethoxycarbonylbenzoic acid)是一种结构简式为C6H5CH2OOCC6H4COOH的有机化合物。
  • 赛尔曼·瓦克斯曼赛尔曼·A·瓦克斯曼(英语:Selman A. Waksman,1888年7月22日-1973年8月16日),乌克兰裔美国生物化学家和微生物学家。瓦克斯曼发现了链霉素和其他抗生素。瓦克斯曼首先将链霉素用于
  • 变性手术性别重置手术(英语:Sex reassignment surgery,缩写:SRS),也称为性别还原手术、变性手术、性转换手术(英语:Transsexual surgery)等等,是一项外科技术,也是一种阉割手术,通过这种手术程序
  • 洗肾血液透析(英语:Hemodialysis),是将血液抽出体外,经过血液透析机的渗透膜,清除血液中的新陈代谢废物和杂质后,再将已净化的血液输送回体内,俗称“洗肾”及“洗血”。血液透析可用于肾
  • 增城增城区(官方音译:Zengcheng,传统外文:Tsengshing、Tsang Shing)是中国广东省广州市市辖区。增城建县于东汉建安六年(201年),因南海郡原辖六县,新设一县,增多一城,故名“增城”;1993年12
  • 盖州盖州,中国古代的州。本为高丽盖葛牟城,辽朝时为辰州。金朝明昌四年(1193年),罢曷苏馆,建辰州、辽海军节度使。明昌六年(1195年),因与“陈”同音,以盖葛牟为名。治所在今辽宁省盖州市。
  • 南北关系发展与和平繁荣宣言《北南关系发展与和平繁荣宣言》,又称《南北关系发展与和平繁荣宣言》,于2007年10月4日在北朝鲜平壤签署,主旨是要为韩战画上句号,并为朝鲜半岛的永久和平立下基础。2018年4月 (