基础算法题——Radio Transmission(KMP-next 妙用)

2023-11-11

Radio Transmission

题目

解题思路

在KMP算法中 next[l] 记录的就是字符串最长的相同的前缀与后缀,也就是说在题目字符串中有一段字符串是重复出现的,那么减去重复出现的字符串以后,剩下的就是这个字符串最小的循环节。

比较字符串的 next 数组

下标 0 1 2 3 4 5 6 7 8 9 10
s1 c a b c a b c a b c a
next -1 0 0 0 1 2 3 4 5 6 7
s2 b c d a b c d a b c d
next -1 0 0 0 0 1 2 3 4 5 6

运行结果
s1 的循环节:abc 或 bca、cab
s2 的循环节:abcd 或 bcda、cdab、dabc
结果符合预期


实现代码

#include<bits/stdc++.h>
using namespace std;
int next[1000010];
string s;

void get_next(){
	int j=-1, i=0;
	next[0]=-1;
	while(i<s.size()){
		if(j==-1||s[j]==s[i]){
			j++;
			i++;
			next[i] = j;
		}
		else
			j = next[j];
	}
	return ; 
}

int main(){
	int n;
	scanf("%d", &n);
	cin>>s;
	get_next();
/*	printf(" %c ", s[0]);
	for(int i=1; i<=s.size(); i++)
	printf("%c ", s[i]);
	printf("\n"); 
	for(int i=0; i<=s.size(); i++)
	printf("%d ", next[i]); 
	printf("\n");*/
	printf("%d", n-next[n]);
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础算法题——Radio Transmission(KMP-next 妙用) 的相关文章

随机推荐

  • RC4文件加密的Python实现方法

    RC4 Rivest Cipher 4 是一种流密码 stream cipher 算法 广泛应用于网络通信和数据加密中 本文将介绍如何使用Python实现RC4文件加密算法 RC4算法的核心是使用一个伪随机数生成器 PRNG 生成密钥流 然
  • 端口显示被占用,如何关闭端口

    用管理员权限打开命令提示符 如果要关闭3306端口 首先要查询此端口号对应的PID 则输入以下命令 1 输入 netstat ano findstr 3306 然后借助命令终止PID对应的进程 输入以下命令 2 输入 taskkill PI
  • 【C++简明教程】Python和C++指定元素排序比较

    Python 中的排序 在 Python 中 常用的排序就是 sorted 对于列表这种数据结构来说 还有 sort 方法 列表的排序 使用 sort 方法进行排序 以第二个值进行升序排序 列表的 sort 方法是原地排序 另外一种排序方法
  • CMake的使用--以ORCA避碰C++库为例

    1 安装cmake 链接 Download CMake 版本需下载Binary distributions这个模块下的 Windows x64 Installer cmake 3 27 1 windows x86 64 msi 注意事项 1
  • CentOS6.5 安装 抓包工具tcpdump

    1 裸机没装GCC 离线安装 首先到http vault centos org 6 5 os x86 64 Packages 下载用到的rpm包 包括 ppl 0 10 2 11 el6 x86 64 rpm cloog ppl 0 15
  • LabVIEW自带函数Database Toolkit实现SQL Server操作(上)

    目录 一 函数位置 二 函数一览 三 主要介绍 1 DB Tool Open Connection vi 2 DBTool Close Connection vi 3 Database Variant To Data vi 4 DBTool
  • 浅析Redux 的 store enhancer

    相信大家都知道Redux的middleware 中间件 的概念 Redux通过middleware可以完成发送异步action 网络请求 打印action的日志等功能 相对而言 Redux的store enhancer的概念 很多人并不是很
  • 【MLOps】第 5 章 : 生产准备

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 副本与ISR设计--Kafka从入门到精通(十四)

    上篇文章说了 broker的消息设计 采用紧凑的byteBuffer 存储设计主要包含attribute后三个表示压缩类型 还有crc效验 以及key和value 后面新增了时间戳 Broker消息设计 Kafka从入门到精通 十三 htt
  • js实现数学的排列组合

    js实现数学的排列组合 实现 组合 param arr 待选数组 param size 从数组里面要抽几个元素进行组合 function combination arr size 1 45 3 9 4 14 1 const r param
  • 如何二次封装Element-Plus table组件

    最近做了一个后台的项目 需要用到大量的表格组件 我就试着把它给封装了一下 记录一下 那么现在开始了 父页面代码
  • Linux_centos7_网络管理1_2

    测试网络连接状态 kingarthur localhost ping www google com PING www google com 174 37 175 229 56 84 bytes of data C www google co
  • nginx_upstream_check_module模块

    nginx upstream check module模块 一个更专业的模块 来专门提供负载均衡器内节点的健康检查的 这个就是淘宝技术团队开发的 nginx 模块nginx upstream check module 通过它可以用来检测后端
  • 静态链接和动态链接的区别

    在理解静态和动态 共享 库链接之间的区别之前 让我们先看一个典型程序的生命周期 从编写源代码到执行它 首先使用任何程序员选择的编辑器以文本文件的形式编写程序 然后必须对其进行编译以将文本文件转换为机器可以理解和执行的目标代码 通常我们编写的
  • 1216项目设计模板

    一 基本信息 目标上线时间 yyyy mm dd 项目人员 研发 测试 背景 二 功能需求 1 业务平台 1 业务的订购 配置默认的模板或者策略 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img I8vhSe47
  • 最全的Pandas 日期处理 超强总结!

    对于 Pandas 来说 可以处理众多的数据类型 其中最有趣和最重要的数据类型之一就是时间序列数据 时间序列数据无处不在 它在各个行业都有很多应用 患者健康指标 股票价格变化 天气记录 经济指标 服务器 网络 传感器和应用程序性能监控都是时
  • leetcode-135-分发糖果

    老师想给孩子们分发糖果 有 N 个孩子站成了一条直线 老师会根据每个孩子的表现 预先给他们评分 你需要按照以下要求 帮助老师给这些孩子分发糖果 每个孩子至少分配到 1 个糖果 相邻的孩子中 评分高的孩子必须获得更多的糖果 那么这样下来 老师
  • SpringBoot 集成sharding-jdbc 提示:Failed to configure a DataSource: ‘url‘ attribute is not specified ***

    问题描述 今天使用SpringBoot 集成sharding jdbc 4 1 1实现分库分表时报错 APPLICATION FAILED TO START Description Failed to configure a DataSou
  • 记录一次因now()函数应用周期性查不到数据的问题

    问题原因 查询sql使用了now 函数 测试环境数据库所在的容器日期不对 与实际时间晚8个小时 问题背景描述 某天下午快要下班的时候 大概五点的样子 某个测试小哥在系统里点击用户注册功能注册后 一切数据都正常生成后 登录新注册的用户 发现这
  • 基础算法题——Radio Transmission(KMP-next 妙用)

    Radio Transmission 解题思路 在KMP算法中 next l 记录的就是字符串最长的相同的前缀与后缀 也就是说在题目字符串中有一段字符串是重复出现的 那么减去重复出现的字符串以后 剩下的就是这个字符串最小的循环节 比较字符串