字符串搜索算法

✍ dations ◷ 2025-10-07 22:17:48 #字符串匹配算法

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

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

相关

  • 空气质量空气质量指数(英语:Air Quality Index, AQI)是定量描述空气质量状况的非线性无量纲指数。其数值越大、级别和类别越高、表征颜色越深,说明空气污染状况越严重,对人体的健康危害也
  • 海水淡化海水淡化也称海水化淡、海水脱盐,是指将海水中的多余盐分和矿物质去除得到淡水的工序。海水淡化主要是为了提供饮用水和农业用水,有时食用盐也会作为副产品被生产出来。海水淡
  • 洛杉矶时报《洛杉矶时报》(英语:Los Angeles Times),又称《洛城时报》,美国发行量最大的报纸之一。创刊于1881年12月4日。其主要发行地区为加利福尼亚州。最初创办人为托马斯·加德和内森·
  • X-射线X射线(英语:X-ray),又被称为爱克斯射线、艾克斯射线、伦琴射线或X光,是一种波长范围在0.01纳米到10纳米之间(对应频率范围30 PHz到30EHz)的电磁辐射形式。X射线最初用于医学成像诊
  • 希安希安(英语:Khyan),古埃及第十五王朝国王,(约公元前1610年—约公元前1580年在位)。于埃及和国外发现了几座写有他名字的纪念碑,例如,于巴格达发现的一座狮子卧像和在上埃及盖博拉发现
  • 诺利期诺利期(英语:Norian)是三叠纪的第六个时期,年代大约位于227–208.5百万年前。
  • 海参崴符拉迪沃斯托克国际机场(俄语:Международный аэропорт Владивосток;IATA代码:VVO;ICAO代码:UHWW),中文通称海参崴国际机场,是一座位于俄罗斯符拉迪
  • 天心区天心区为湖南省长沙市市辖区,位于长沙城区的南部,成立于1996年7月10日。天心区南与长沙县接壤,北接开福区,东与芙蓉区和雨花区为界,西隔湘江与岳麓区相望。天心区总面积7.64公里2
  • 克鲁尔-布西综合征克鲁尔-布西综合征(Klüver-Bucy Syndrome),又称为双侧颞叶切除综合征,指颞叶、杏仁体受损所导致的特殊行为,最典型的症状为把任何看得到的东西塞进嘴里,或是对任何生物做爱。这个
  • 法国高等教育机构列表根据法国法律,大学(法语:Université)一词所指的是法国公立科学、文化和专业机构中的综合性大学和一所国立理工学院。在法国还有一些大学与院校共同体、技术大学 (EPSCP,独立于大