字符串搜索算法

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

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

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

相关

  • 链型植物轮藻门 有胚植物链型植物(英语:Streptophytina)是植物中的一大类群,包括轮藻门(广义上的轮藻)和有胚植物(现存的陆生植物:苔藓维管植物)两大类。
  • 地区法院议长:南希·裴洛西(民主党) 多数党领袖(英语:Party leaders of the United States House of Representatives):斯坦利·霍耶(民主党) 少数党领袖(英语:Party leaders of the United Sta
  • 家猫猫(学名:Felis Catus或Felis silvestris catus),通常指家猫,为小型猫科动物。根据遗传学及考古学分析,人类驯养猫的纪录可追溯至10,000年前的肥沃月湾地区,古埃及人饲养猫的纪录可
  • 国际电信联盟国际电信联盟(法语:Union Internationale des Télécommunications,简称 UIT; 英语:International Telecommunication Union,简称 ITU)是一个国际组织,主要负责确立国际无线电和电
  • 光害光害,或称光污染(light pollution),是人类过度使用照明系统而产生的问题。最显而易见的影响是城市夜空里的星体被众多大厦的灯光所覆盖而消失了。这使得观察宇宙的研究受到影响,
  • 加州理工学院加州理工学院(California Institute of Technology,缩写:Caltech)是一所位于美国加利福尼亚州帕萨迪纳的私立研究型大学,创建于1891年,以自然科学及工程学著称,常被评为世界前十的
  • 毛笔毛笔,是一种源于中国的传统书写工具。有玉管、翠管等雅称,被列为中国的文房四宝之一。现今也有一些科学毛笔。1954年在长沙左公山15号战国中期楚墓中已有出土保存完好的毛笔。
  • 魏国魏国,自名为
  • 中坜区中坜区(台湾客家语四县腔:zungˊ lagˋ kiˊ;饶平腔:zhungˇ lagˋ kiˇ;台湾闽南话:Tiong-li̍k-khu)为桃园市的市辖区。以地形考量,全区大致可以分成中坜、内坜、龙冈、大西区(青埔
  • 赖慕布赖慕布(满语:ᠯᠠᡳᠮᠪᡠ,转写:Laimbu;1611年腊月廿四日—1646年五月十一日),爱新觉罗氏,满洲正蓝旗人。努尔哈赤第十三子。皇太极之庶弟,生母庶妃为西林觉罗氏。辛亥年十二月二十四