字符串搜索算法

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

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

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

相关

  • 滤纸滤纸(Filter Paper)是以纤维制成、质地疏松多孔、具有良好过滤功能的纸。滤纸可用来将固体与水或空气分开。滤纸为因应不同用途而有各种差异,如:湿强度、孔隙率、颗粒残留量、流
  • 酸杆菌纲酸杆菌门(Acidobacteria)是新近被分出的一门细菌。它们是嗜酸菌。现在对它们研究还很少,但它们在生态系统中具有重要作用,比如土壤中。
  • 约翰·弗莱明约翰·安布罗斯·弗莱明爵士(英语:Sir John Ambrose Fleming,1864年11月29日-1945年4月18日),英国电气工程师和物理学家。他因为发明真空管(二极管)、物理电磁学中使用的右手法则而
  • ɦ浊声门擦音(英:voiced glottal fricative)是 /h/ 相应的浊音,亦称“浊喉擦音”。发音时候气流通过声门并且带有声带的振动。此音在国际音标中的符号为⟨ɦ⟩,在X-SAMPA中的符号为
  • 拉撒路物种在古生物学中,拉撒路物种(Lazarus taxon)意思是那些在化石纪录中突然消失又出现的物种。其中拉撒路一词来源于《新约圣经》中的《约翰福音》,他是耶稣的好友及门徒,在其病死之后
  • 半圆半圆为圆的任意一条直径把圆周分成两条弧。半圆的完整弧度始终为180°(相当于π 弧度或半圈)。它只有一条对称线(反射对称)。刻在半圆上的三角形必为直角三角形。在端点之间的直
  • 奥比亚霍比奥苏丹国(索马里语:Saldanadda Hobyo,阿拉伯语:سلطنة هوبيو‎),即奥比亚王朝,是19世纪由索马里人在索马里中部、埃塞俄比亚东部成立的国家,建于1870年代为马吉尔廷王
  • 莫弗特县莫弗特县(英语:Moffat County)是美国科罗拉多州西北角的一个县,西邻犹他州,北邻怀俄明州,面积12,305平方公里。根据2010年人口普查,本县共有人口13,795人。本县县治为克雷格。本县
  • 约克镇级航空母舰约克城级航空母舰(英语:Yorktown Class aircraft carrier)是美国在战间期设计的航空母舰,前后一共建造3艘,是继列克星敦级与突击者级航空母舰后,美国设计的第三款舰队航空母舰。约
  • 粒子物理现象学理论粒子物理中的粒子物理现象学(英文:particle physics phenomenology)处理有关理论物理在高能粒子实验中的应用。在标准模型的框架内,现象学家为实验计算详细的预测结果,通常要