数据结构--串

本文为复习的草稿笔记,,,有点乱

1. 串的基本概念和基本操作

串是由零个或多个字符组成的有限序列

2. 串的存储结构

3.串的应用

模式匹配

BF算法(简单匹配算法

穷举法

算法思路:从子串的每一个字符开始依次与主串的字符进行匹配

int Index_BF(SSTring S, SSTring T)
{
    int i=1;j=1;
    while (i<=S.len && j<= T.len)
    {
        if(S[i]==T[j]) {
            i++;
            j++;
        }
        else {
            i=i-j+2;//(i=i-(j-1)+1)
            j=1;
        }
        if(j>T.len) 
            return i-T.len;//匹配成功,返回第一个字符的下标
        else 
            return 0;
    }
}
KMP算法 (快速匹配算法

在BF算法上进行加速

算法思路:

利用部分匹配的结果加速模式串的滑动速度,主串的i指针不需要回溯,子串的j指针也不一定要回溯到头

int Index_KMP(Sstring S,Sstring T, int pos)
{
    int i=pos,j=1;
    while(i<=S.len && j<=T.len)
    {
        if(j==0||s[i]==T[j]){i++;j++}
        else j=next[j];
    }
    if(j>T.len) 
        return i-T.len;
    else 
        return 0;
}

子串的指针j的回溯,通过next[j] 来计算

next[j] 只与子串有关,与主串无关

next数组:当前字符之前的字符串中最长相等的真前后缀(下面的例子有点细小的差别。。

。。。主串被遍历过的后缀和字串的前缀---

C

 

void get_next(SString T, int next[])
{
    i=1;
    nexe[1]=0;
    j=0;
    while(i<T[0]){
        if(j==0|| t[i]==T[j]) {
            i++;
            j++;
            next[j]=j;
        }
        else j=next[j];
    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大数据】Flink 测试利器:DataGen

Flink 测试利器&#xff1a;DataGen 1.什么是 FlinkSQL &#xff1f;2.什么是 Connector &#xff1f;3.DataGen Connector3.1 Demo3.2 支持的类型3.3 连接器属性 4.DataGen 使用案例4.1 场景一&#xff1a;生成一亿条数据到 Hive 表4.2 场景二&#xff1a;持续每秒生产 10 万条…

FunTester 性能测试中获取 JVM 资源信息

在以往性能测试中&#xff0c;通常施压机的硬件资源不会成为压力瓶颈&#xff0c;但是在多任务并行的场景中&#xff0c;如果一个任务占用当前机器资源过多&#xff0c;会影响其他任务执行。或者当前用例本身存在问题&#xff0c;导致性能无法进一步提升&#xff0c;影响了性能…

鸿蒙开发系列教程(四)--ArkTS语言:基础知识

1、ArkTS语言介绍 ArkTS是HarmonyOS应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开…

脏牛漏洞(CVE-2016-5195)复现过程(详细完整版)

1、实验环境 KaLi 攻击机 Linux靶机 靶场 实验目的&#xff1a; 掌握漏洞利用的方法 掌握脏牛漏洞的原理 提高对内核安全性的认识 2、靶场搭建 VMware导入靶场 靶场地址&#xff1a;链接&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。…

SEO品牌推广的核心步骤

在当今数字化的商业环境中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;品牌推广已经成为企业不可或缺的一部分。通过优化网站&#xff0c;提高在搜索引擎结果中的排名&#xff0c;企业能够更好地吸引潜在客户&#xff0c;提升品牌知名度。本文将专心分享如何做好SEO品…

线性表的顺序存储实现

前言 线性表的顺序存储及基本操作的实现 一、线性表 线性表&#xff08;List&#xff09;是由同类型数据元素构成有序序列的线性结构&#xff0c;用户处理线性表数据时常常需要初始化、查找、插入、删除、计算数据长度等操作。 线性表还包含以下几个要素&#xff1a; 表中元…

C语言编译和链接

翻译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境 .第一种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令 .第二种是执行环境&#xff0c;它用于实际执行代码 翻译环境 翻译环境是由编译和链接两个大过程组成&#xff0c;而…

交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装

AArch64 是随 ARMv8 ISA 一起引入的 64 位架构&#xff0c;用于执行 A64 指令的计算机。而且在 AArch64 状态下执行的代码只能使用 A64 指令集。&#xff0c;而不能执行 A32 或 T32 指令。但是&#xff0c;与 AArch32 中不同&#xff0c;在64位状态下&#xff0c;指令可以访问 …

ArcGIS Pro控件汇总

控件来源 我们对其一一进行查看是否有控件 查看位置 控件展示 ribbonControls 展示 代码 <controls:ProWindow x:Class"ProAppModule9.ProWindowRibbon"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:controls"clr-…

集成学习算法(Bagging 思想、Boosting思想)及具体案例

概述&#xff1a;是机器学习中的一种思想&#xff0c;通过多个模型的组合形成一个精度更高的模型&#xff0c;参与组合的模型称为弱学习器 1、Bagging 思想 有放回的抽样&#xff08;booststrap抽样&#xff09;产生不同的训练集&#xff0c;从而训练不同的学习器&#xff1b;…

FairGuard游戏安全2023年度报告

导 读&#xff1a;2023年&#xff0c;游戏行业摆脱了疫情带来诸多负面影响&#xff0c;国内游戏市场收入与用户规模双双实现突破&#xff0c;迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&#xff0c;不少游戏饱受其侵扰&#xff0c;游戏厂商愈发重视游戏安全问题。 为帮助…

重磅发布!基于百度飞桨的《人工智能基础及应用》书籍正式上线

科技日新月异的今天&#xff0c;人工智能已经成为引领未来的核心驱动力。为了帮助大家更好地深入理解人工智能的理论和技术&#xff0c;为未来发展做好准备&#xff0c;百度飞桨教材编写组联合北京交通大学王方石教授、北京邮电大学杨煜清特聘副研究员共同撰写推出了《人工智能…

使用 FFmpeg 轻松调整视频的大小/缩放/更改分辨率

在此 FFmpeg 教程中&#xff0c;我们学习使用 FFmpeg 的命令行工具更改视频的分辨率&#xff08;或调整视频的大小/缩放&#xff09;。 更改视频的分辨率&#xff08;也称为调整大小或缩放&#xff09;是视频编辑、处理和压缩中非常常见的操作。对于 ABR 视频流尤其如此&#…

【笔记】Helm-3 主题-6 Chart仓库指南

Chart仓库指南 本节介绍如何创建和使用chart仓库。在高层级中&#xff0c;chart仓库是打包的chart存储和分享的位置。 社区的Helm chart仓位于 Artifact Hub &#xff0c;欢迎加入。不过Helm也可以创建并运行您自己的chart仓库。该指南将介绍如何操作。 Artifact Hub 先决条…

防爆气象站需要如何维护

TH-FBCQX2 在工业生产中&#xff0c;防爆气象站是保障安全生产的重要设备之一。由于其特殊的使用环境和功能&#xff0c;防爆气象站的维护保养工作显得尤为重要。 一、日常维护保养 清洁&#xff1a;防爆气象站的外部和内部组件需要定期清洁&#xff0c;以去除灰尘、油渍和杂质…

快速入门:搭建宠物用品小程序商城的必备知识

小程序商城逐渐成为商家展示和销售产品的重要渠道。对于宠物用品商家来说&#xff0c;搭建一个宠物用品小程序商城不仅可以提高品牌知名度&#xff0c;还能吸引更多的潜在客户。本文将介绍如何通过乔拓云平台搭建宠物用品小程序商城。 首先&#xff0c;商家需要登录乔拓云平台后…

GaussDB与openGauss有什么相同和不同?

众所周知&#xff0c;GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务&#xff0c;openGauss是开源数据库&#xff0c;两者之间又是什么样的关系&#xff0c;有什么相同和不同&#xff0c;让我…

Git教程学习:03 记录每次更新到仓库

文章目录 1 检查当前文件状态2 跟踪新文件3 暂存已修改的文件4 状态简览5 忽略文件6 查看已暂存和未暂存的修改7 提交更新8 跳过使用暂存区域9 移除文件10 移动文件 现在我们的机器上有了一个 真实项目 的 Git 仓库&#xff0c;并从这个仓库中检出了所有文件的 工作副本。 通常…

【技术科普】什么是AI视频识别分析?干货满满!

视频AI识别分析是指利用人工智能技术对视频数据进行智能化检测、分析和提取有用信息的过程。通过视频AI分析&#xff0c;可以自动化地识别、检测和理解视频中的对象、动作、场景等元素&#xff0c;并进行标记或者相关处理&#xff0c;最后形成相应事件的处理和告警信息。这项技…

软件是什么?前端,后端,数据库

软件是什么&#xff1f; 由于很多东西没有实际接触&#xff0c;很难理解&#xff0c;对于软件的定义也是各种各样。但是我还是不理解&#xff0c;软件开发中的前端&#xff0c;后端&#xff0c;数据库到底有什么关系呢&#xff01; 这个问题足足困扰了三年半&#xff0c;练习时…