数据结构——字符串匹配KMP

首先明确几个概念:

s[ ]: 主串

p[ ]: 模式串(用于匹配)

next[ j ]:以p[ j ]结尾的p字符串的前后缀最大匹配值,也是当p[ j+1 ]与s[ i ]不匹配时,j指针移动的下一位置。(需要预处理出来)

AcWing - 算法基础课

代码如下:

#include<iostream>using namespace std;const int N = 100100,M = 1000100;char s[M],p[N];int ne[N];int main()
{int n,m;cin >> n >> p+1 >> m >> s+1;//求next数组/*求next数组和匹配过程类似因为next[i]是以i结尾的(包括i)字符串的最大前后缀匹配值然后这个过程相当于p串是前缀匹配,s串是后缀匹配,在每一个位置进行遍历*/for(int i=2,j=0;i<=n;i++)//i=2开始是因为next[1]=0;{while(j&&p[i]!=p[j+1])j=ne[j];if(p[i]==p[j+1])j++;//这里是两个p串ne[i]=j;}//kmpfor(int i=1,j=0;i<=m;i++){while(j&&s[i]!=p[j+1])j=ne[j];if(s[i]==p[j+1])j++;if(j==n){//匹配上了一个输出开头下标cout<<i-n<<" ";j=ne[j];}}return 0;
}

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

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

相关文章

排查JVM的一些命令

查看JVM相关信息的方法 环境&#xff1a; Win10, jdk17 查看端口的Pid netstat -ano | findstr <端口号>列出当前运行的JVM进程 ## 用于输出JVM中运行的进程状态信息。通过jps&#xff0c;可以快速获取Java进程的PID&#xff08;进程标识符&#xff09;&#xff0c; …

使用vue3框架vue-next-admin导出表格excel(带图片)

想要使用vue3导出表格内容并且图片显示在表格中&#xff08;如图&#xff09;&#xff1a; 步骤如下&#xff1a; 下载安装插件&#xff1a; 安装命令&#xff1a;npm install js-table2excel 引入插件&#xff1a; import table2excel from js-table2excel 使用插件 …

懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)

1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)&#xff1a;https://www.bilibili.com/video/BV1M6rdYEEog/ 备注&#xff1a; 1.本地离线卡密采用最安全的非对称加解密技术&#xff0c;设备id采用最安全多重混合加密不可逆技术生成&…

基于Flask的租房信息可视化系统的设计与实现

【Flask】基于Flask的租房信息可视化系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网的快速发展&#xff0c;租房市场日益繁荣&#xff0c;信息量急剧增加&#xff…

JUC并发—8.并发安全集合二

大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的put操作流程 5.ConcurrentHashMap的Node数组初始化 6.ConcurrentHashMap对Hash冲突的处理 7.ConcurrentHashMap的并发扩容机制 8.Concu…

docker 改了镜像源为阿里云,还是下载失败

我是windows系统&#xff0c;在学习docker&#xff0c;刚开始执行docker run hello-world还是失败&#xff0c;然后改了镜像源为阿里云&#xff0c;还是失败&#xff0c;后来去查资料&#xff0c;除了阿里云还配置了很多其他镜像源&#xff0c;才好使 "registry-mirrors&q…

mysql总结

系列文章目录 暂无 前言 mysql面试题的总结以及部分原理&#xff0c;部分图片为网上资源&#xff0c;如侵权请告知删除。 一、MySQL 执行流程 1.连接器&#xff1a;建立连接&#xff0c;管理连接、校验用户身份&#xff1b; 2.查询缓存&#xff1a;查询语句如果命中查询缓存…

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…

城市地质安全专题连载⑦ | 加强国土空间规划管控,规避城市地质安全风险

作者 | 徐海洋 在国土空间规划中&#xff0c;地质调查扮演着先导性和基础性的角色。它如同一把无形的尺子&#xff0c;衡量着每一寸土地的开发潜力与安全边界&#xff0c;不仅为城市规划提供了科学依据&#xff0c;还在规避地质安全风险、优化资源配置方面发挥着关键作用。然而…

内部知识库:安全协作驱动数字化转型新路径

内容概要 在数字化转型进程中&#xff0c;内部知识库作为信息聚合与分发的核心载体&#xff0c;正通过安全协作与智能权限管理重构企业知识治理模式。其核心价值在于将分散的部门数据、经验文档与业务洞察整合至统一平台&#xff0c;形成可追溯、可共享的企业级知识中台&#…

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

文章目录 一. 什么是分布式事务&#xff1f;二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交&#xff08;2PC&#xff09;2. TCC&#xff08;Try-Confirm-Cancel&…

ARM Linux平台下 OpenCV Camera 实验

一、硬件原理 1. OV2640 1.1 基本功能 OV2640 是一款低功耗、高性能的图像传感器&#xff0c;支持以下功能&#xff1a; 最高分辨率&#xff1a;200 万像素&#xff08;1600x1200&#xff09;。 输出格式&#xff1a;JPEG、YUV、RGB。 内置图像处理功能&#xff1a;自动曝…

Modbus协议基础

文章目录 1、Modbus协议基础知识1.1、Modbus存储范围1.2、Modbus协议功能码说明1.3、Modbus协议分类及测试 2、ModbusRTU通信报文分析2.1、modbusRTU通信格式 3、Modbus通信库开发4、通信库测试 1、Modbus协议基础知识 1.1、Modbus存储范围 modbus规定&#xff0c;每个存储区…

电脑想安装 Windows 11 需要开启 TPM 2.0 怎么办?

尽管 TPM 2.0 已经内置在许多新电脑中&#xff0c;但很多人并不知道如何激活这一功能&#xff0c;甚至完全忽略了它的存在。其实&#xff0c;只需简单的几步操作&#xff0c;你就能开启这项强大的安全特性&#xff0c;为你的数字生活增添一层坚固的防护屏障。无论你是普通用户还…

node 使用 Redis 缓存

缓存是什么&#xff1f; 高并发下&#xff0c;一个项目最先出问题的&#xff0c;并不是程序本身&#xff0c;而是数据库最先承受不住。 在数据库上我们可以做很多优化&#xff0c;例如优化 SQL 语句&#xff0c;优化索引&#xff0c;如果数据量大了&#xff0c;还可以分库、分表…

解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported

找了好多教程都没有用&#xff0c;终于解决了&#xff01;&#xff01;我是因为ubuntu分区的时候出问题了 问题描述&#xff1a; 双系统装好&#xff0c;隔天开机找不到引导项&#xff0c;黑屏显示下列 因为我用的D盘划分出来的部分空闲空间&#xff0c;而不是全部&#xff0c…

NLP-RNN-LSTM浅析

目录 双向 LSTM&#xff08;Bi - LSTM&#xff09; 双向 LSTM&#xff08;Bi - LSTM&#xff09;原理深入讲解 代码示例&#xff08;基于 PyTorch&#xff09; LSTM 应用到双向 RNN 中 代码示例&#xff08;基于 PyTorch&#xff09; 双向 LSTM - CRF&#xff08;Conditio…

自动化之ansible(二)

一、ansible中playbook&#xff08;剧本&#xff09; 官方文档&#xff1a; Ansible playbooks — Ansible Community Documentation 1、playbook的基本结构 一个基本的playbook由以下几个主要部分组成 hosts: 定义要执行任务的主机组或主机。 become: 是否需要使用超级用户…

uni-app小程序开发 基础知识2

目标&#xff1a; 构建一个文章发表平台。 我们先来写一个静态框架。 以下是 首页初代码文章列表页代码&#xff1a; <template><view class"content"><!-- 轮播图 --><swiper class"swiper-container" autoplay"true"…

kafka-集群扩容

一. 前言&#xff1a; 随着业务增加&#xff0c;我们会面临这kafka当性能问题&#xff0c;需要进行集群扩容&#xff0c;增加broker节点。 二. 扩容说明: 增加新服务到kafka集群是很容易的(参考&#xff1a; kafka-部署安装-CSDN博客 )&#xff0c;只要为新服务分配一个独一无…