数据结构速成--串

        由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。  

目录

一、串的基本概念

二、串的简单模式匹配算法(BF算法) 

三、KMP算法


一、串的基本概念

        串是由零个或多个字符组成的有限序列。一般表示为下面这种形式:

        其中,S是串名,单引号括起来的字符序列是串的值;a_{i}可以是字母、数字或其他字符;串中字符的个数称为串的长度。n=0时的串称为空串。
        串中任意个连续的字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。

        某个字符在串中的序号称为该字符在串中的位置。子串在主串中的位置以子串的第一个字符在主串中的位置来表示。

        当两个串的长度相等且每个对应位置的字符都相等时,称这两个串是相等的。

        由一个或多个空格组成的串称为空格串,其长度为串中空格字符的个数。 

二、串的简单模式匹配算法(BF算法) 

        子串的定位操作通常称为串的模式匹配,它求的是子串在主串中的位置。

例:假设主串为a b a b c a b c a c b a b,子串为a b c a c。

         与线性表相比,串的一系列操作最显著的特点就是通常会把串作为整体进行操作

三、KMP算法

        KMP算法与BF算法最大的区别就是,KMP算法中i不会后退,而BF算法的i后退,如上面例子中第一趟i=3与j=3不匹配,此时i后退到i=2的位置。而KMP算法里,i要么保持不动要么往前走。

        想要学会KMP算法,就两步:先学会求next[j],再明白KMP算法的比较逻辑。

        关于怎样求next[j],大家可以看一下这个视频:KMP算法计算next函数值

        学会怎样计算后,再来学习KMP算法的基本逻辑:KMP 算法讲解(该视频只需观看1:17--3:17的内容)。

练手题:

下面直接给出答案:
        next函数值:01122312

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux冯诺依曼体系结构】

目录 1.冯诺依曼体系结构原理 1.冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成 输入单元&#…

最新SpringBoot项目财务管理系统

采用技术 最新SpringBoot项目财务管理系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统登录页面 管理员功能 管理员功能页面 员工管理页面 部…

SpringBoot多数据源(五)

SpringBoot多数据源-集成多个mybatis框架 1.基本框架2.使用2.1项目结构2.2 依赖导入2.3 application.yml配置2.4 创建读与写的SqlSessionFactoryBean 3.总结 1.基本框架 通过启动多个SqlSessionFactoryBean,每个SqlSessionFactoryBean对应一个datasource和指定位置的…

STM32G431RBT6移植FreeRTOS

引言: 本文专门为参加了蓝桥杯嵌入式赛道的同学准备, 大家可能会有这样一个问题, 比完赛之后, 对于像继续使用STM32G431RBT6学习FreeRTOS的, 发现网上的教程使用的板子基本上都是F1和F4的, 其实呢&#xff…

二叉树的最大深度 - LeetCode 热题 37

大家好!我是曾续缘😛 今天是《LeetCode 热题 100》系列 发车第 37 天 二叉树第 2 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最…

JAVA面向对象(下 )(一、继承和方法重写)

一、继承 1.1 什么是继承 生活中继承是指: 继承财产>延续财产 继承/遗传 父母的长相,基因 > 延续上一代的基因 继承技能、专业、职位 >延续 继承中华民族的传统文化 > 延续 青出于蓝而胜于蓝 或 长江后浪推前浪,前浪被拍在…

【图像分割】光流生成标签(matlab)

文章目录 1. 框架2. opticalFlow_label3. 光流 1. 框架 2. opticalFlow_label close all; clear; clc; % 使用光流进行标签的生成 %% 视频帧的读取 npy_data readNPY(train.npy);%% 提取标签的坐标 first_label squeeze(npy_data(2,1,:,:)); h fspecial("gaussian&quo…

PgSQL之WITH Queries/Statement

PostgreSQL WITH 子句 在 PostgreSQL 中,WITH 子句提供了一种编写辅助语句的方法,以便在更大的查询中使用。 WITH 子句有助于将复杂的大型查询分解为更简单的表单,便于阅读。这些语句通常称为通用表表达式(Common Table Express…

快速了解开发过程中VO、DTO、BO、 DO、PO、POJO、Entity的概念、区别、作用

​ 目录 ​前言 VO(Value Object,值对象) DTO(Data Transfer Object,数据传输对象) BO(Business Object,业务对象) DO(Data Object,数据对象…

OpenCV从入门到精通实战(六)——多目标追踪

基于原生的追踪 使用OpenCV库实现基于视频的对象追踪。通过以下步骤和Python代码,您将能够选择不同的追踪器,并对视频中的对象进行实时追踪。 步骤 1: 导入必要的库 首先,我们需要导入一些必要的Python库,包括argparse、time、…

三级等保安全解决方案——实施方案

实施方案设计 本方案将依照国家有关信息安全建设的一系列法规和政策,为电台建立体系完整、安全功能强健、系统性能优良的网络安全系统。以“统一规划、重点明确、合理建设、逐步强化”为基本指导原则。根据电台网络系统不同信息的重要性调整保护策略,不欠…

SpringBoot项目创建,详细流程

一、前言 Spring Boot是一个开源的Java框架,由Pivotal团队(现为VMware旗下)开发,通过提供默认配置和一系列启动器(starters)来简化项目配置,使得开发者能够快速启动和运行Spring应用程序。 ‍ …

K8s 部署 elasticsearch-7.14.0 集群 及 kibana 客户端

一、K8s 部署 elasticsearch-7.14.0 集群 安装规划 组件replicas类型es3StatefulSetkibana1Deployment 使用 k8s 版本为:v1.18.0 。 本次使用 OpenEBS 来作为存储引擎,OpenEBS 是一个开源的、可扩展的存储平台,它提供了一种简单的方式来创…

国内首款千亿参数MoE模型APUS-xDAN-4.0:性能逼近GPT-4,可在4090显卡上运行

前言 随着人工智能技术的快速发展,模型参数的数量已成为衡量其复杂性和处理能力的重要指标。近日,国内科技企业APUS与AI创企新旦智能联合宣布,成功开源了国内首个千亿参数的混合专家模型(MoE),APUS-xDAN-4…

锁策略和死锁问题

锁策略 乐观锁 vs 悲观锁重量级锁 vs 轻量级锁自旋锁 vs 挂起等待锁读写锁 vs 互斥锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁死锁死锁产生的必要条件如何简单的解决死锁问题 小结 这里不是描述的某个特定锁,而是描述的锁的特性,描述的是"一类锁". 乐观锁 vs 悲观…

Java配置环境变量的过程

第一步:先找到你下载java的文件夹。 第二步:点击它进入看到新的文件夹继续点击。 第三步:点击bin文件。 第四步:点进去bin文件之后复制上述文件的地址。 第五步:回到你的电脑位置右键鼠标点击空白位置出现属性点进去 第…

设计模式胡咧咧之策略工厂实现导入导出

策略模式(Strategy Pattern) 定义: 定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。 本质: 分离算法,选择实现 应用场景 何时使用 一个系统有许多类,而区分他们的只是他们直接…

复合机器人在磁钢上下料中的应用及其优势分析

复合机器人是一种集成了移动机器人和工业机器人功能的设备,其独特之处在于拥有“手、脚、眼、脑”的综合能力,从而实现了更高的灵活性和操作效率。在磁钢上下料的应用场景中,复合机器人能够发挥显著的优势。 首先,复合机器人可以根…

Photomator 3.3.5 (macOS Universal) - 照片编辑软件

Photomator 3.3.5 (macOS Universal) - 照片编辑软件 适用于 Mac、iPhone 和 iPad 的终极照片编辑器 请访问原文链接:https://sysin.org/blog/photomator/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Photomat…

计算机网络 -- 网络编程基础

一 学习准备 1.1 IP地址 在 前文中我们提到过: IP 是全球网络的基础,使用 IP 地址来标识公网环境下主机的唯一性,我们可以根据 目的IP地址 进行跨路由器的远端通信。 但是我们也提到了,通过 IP 地址,只能寻找到目标主机&#xff…