Leetcode 3031. Minimum Time to Revert Word to Initial State II
- Leetcode 3031. Minimum Time to Revert Word to Initial State II
- 1. 解题思路
- 2. 代码实现
- 题目链接:3031. Minimum Time to Revert Word to Initial State II
1. 解题思路
这一题就是一个z算法的题目,算是比较套路的题目了。
关于z算法,之前我们已经写过一个博客(经典算法:Z算法(z algorithm))对这个经典算法本身进行了一下介绍,这里就不展开了,有兴趣的读者可以自行跳转去看一下,或者网上随便其他找一个介绍文章也可以,挺常见的一个算法了。
因此,我们就只看一下z算法是如何应用到这道题目就行了。显然,由于每次移除前k个字符,然后再最后补充k个字符,因此,如果存在某次移除k个字符之后,剩余的子串与原始字符串的开头部分完全一致,那么,我们只需要在后续进行余留的字符补充即可。
而如果知道删除完一轮都无法找到任何字符它的后续子串恰好为原始字符串开头的部分,那么我们也没有关系,总可以删完重排的。
因此,我们要做的就是求取每一个位置的后续子串与原始子串的最长公共头部序列,而这就是z算法要做的事情。
综上,我们先调用一次z算法之后用一个while循环遍历一边即可得到最终答案。
2. 代码实现
给出python代码实现如下:
def z_algorithm(s):n = len(s)z = [0 for _ in range(n)]l, r = -1, -1for i in range(1, n):if i > r:l, r = i, iwhile r < n and s[r-l] == s[r]:r += 1z[i] = r-lr -= 1else:k = i - lif z[k] < r - i + 1:z[i] = z[k]else:l = iwhile r < n and s[r-l] == s[r]:r += 1z[i] = r-lr -= 1z[0] = nreturn zclass Solution:def minimumTimeToInitialState(self, word: str, k: int) -> int:z = z_algorithm(word)ans, idx, n = 0, 0, len(word)while True:idx += kans += 1if idx >= n or z[idx] == n-idx:breakreturn ans
提交代码评测得到:耗时538ms,占用内存21.2MB。
相关文章:
Leetcode 3031. Minimum Time to Revert Word to Initial State II
Leetcode 3031. Minimum Time to Revert Word to Initial State II 1. 解题思路2. 代码实现 题目链接:3031. Minimum Time to Revert Word to Initial State II 1. 解题思路 这一题就是一个z算法的题目,算是比较套路的题目了。 关于z算法,…...
游戏后端如何实现服务器之间的负载均衡?
在当今的游戏行业中,随着游戏用户数量的不断增加,如何实现服务器之间的负载均衡成为了一个亟待解决的问题。游戏后端作为游戏的重要组成部分,承载着游戏逻辑处理和数据存储等功能,因此游戏后端的负载均衡问题尤为重要。本文将详细…...
es6中标签模板
之所以写这篇文章,是因为标签模板是一个很容易让人忽略的知识点 首先我们已经非常熟悉模板字符串的使用方法 const name "诸葛亮" const templateString hello, My name is ${name}标签模板介绍 这里的标签模板其实不是模板,而是函数调用…...
二级C语言笔试1
(总分96,考试时间90分钟) 一、选择题 下列各题A)、B)、C)、D)4个选项中,只有1个选项是正确的。 1. 有以下程序: void sum(int a[]) a[0]a[-1]a[1]; main() int a[10]1,2,3,4,5,6,7,8,9,10; sum(&a[2]); printf(…...
Spring MVC跨域设置
简介 出于安全方面考虑,浏览器发起请求时,会先检查同源策略(协议、主机、端口是否与当前页面相同),不匹配则认为是跨域请求。 CORS (Cross-Origin Resource Sharing) CORS是一种机制,允许服务器声明哪些…...
基于Python的HTTP隧道安全性分析:魔法背后的锁与钥匙
当我们谈论基于Python的HTTP隧道时,不禁让人想起那些神秘的魔法门。但是,在魔法背后,我们也需要确保安全性,就像需要确保魔法不会落入邪恶之手一样。那么,基于Python的HTTP隧道在安全性方面表现如何呢?让我…...
linux的stat/lstat函数和目录遍历函数使用
stat函数: 作用:获取文件属性 函数原型:int stat(const char *pathname, struct stat *statbuf); 返回值:成功返回0 失败返回-1 struct stat { dev_t st_dev; //文件设备编号 ino_…...
HTTP MIME 类型
MIME - Multipurpose Internet Mail Extension, 多用途因特网邮件扩展,起初是为了解决不同的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常好,因此 HTTP 也采纳了它,用它来描述并标记多媒体内容。 MIME 类…...
Mac OS中创建适合网络备份的加密镜像文件:详细步骤与参数选择
这篇文章提供了在Mac OS中创建适合网络备份的加密镜像文件的详细步骤,同时探讨了在选择相关参数时的关键考虑因素,以确保用户能够安全、高效地存储和保护重要数据。 创建步骤 在Mac OS Monterey中,你可以使用“磁盘工具”(Disk …...
Java TreeSet 添加自定义对象 必须指定排序规则
Java TreeSet 添加自定义对象 必须指定排序规则 package com.zhong.collection.set;import java.util.Comparator; import java.util.TreeSet;public class TreeSetDemo {public static void main(String[] args) {// TreeSet 添加自定义数据类型 应该自定义排序规则TreeSet<…...
vue - 指令(一)
看文章可以得到什么? 1.可以快速的了解并会使用vue的指令 2.可以加深你对vue指令的理解,知道每个指令代表什么功能 目录 什么是vue的指令? vue常见指令的使用 v-html v-show v-if v-else 和v-else-…...
正则表达式 regex
文章目录 参考 参考 https://blog.csdn.net/Conradine_Lian/article/details/108890595 regex可以很简单 也可以很复杂 /* 限定符 修饰前面的一个字符,可以是元字符* 重复0次或更多次 重…...
iOS自动打包如何用Python实现
在Python中实现iOS自动打包的过程需要使用第三方库和工具,如pyobjc和appdirs。以下是一个基本的Python脚本示例,用于自动打包iOS应用程序: python复制代码 import os import appdirs import subprocess import pyobjc # 获取应用程序目…...
springboot161基于springboot的公交线路查询系统
简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...
大白话介绍循环神经网络
循环神经网络实质为递归式的网络,它在处理时序任务表现出优良的效果,毕竟递归本来就是一步套一步的向下进行,而自然语言处理任务中涉及的文本天然满足这种时序性,比如我们写字就是从左到右一步步来的鸭,刚接触深度学习…...
GEE——如何利用降水数据绘制指定区域长时间序列的降水分布图和提取每个月(逐月)的降水平均数据
如何利用降水数据绘制指定区域长时间序列的降水分布图和提取每个月的指定降水数据? 这里我们首先要做的就是选择指定的数据,进行指定年份数据的筛选,然后进行长时序数据加载,然后提取研究区内每个月指定的降水平均值,最后进行下载到谷歌云盘。其中影像集合中的每个影像都…...
【软件使用】【edge】如何让edge的某个网页作为应用安装
【背景】 有些常用网页希望用双击快捷方式的形式打开更加效率,我的浏览器主要是edge,研究了两种方法来实现这个需求。 【Edge自带方法】 点击Edge的右上角三点水-》应用-》将此站点作为应用安装。 点击安装,可以选择是否加到开始屏幕等。 …...
四大最受欢迎游泳耳机品牌,全球最好的游泳耳机排行榜测评
在运动耳机的领域中,游泳耳机已经成为热门的选择,尤其受到了广大游泳爱好者的喜爱。在水下运动的时候,通过音乐的陪伴,整个健身过程变得更加有趣和生动。然而,游泳耳机在满足音乐需求的同时,需要克服两个主…...
Linux实验记录:使用BIND提供域名解析服务
前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: 为了降低用户访问网络资源的门槛&am…...
基于单片机的智能寻光小车设计
摘 要:随着物联网技术的飞速发展和逐渐成熟,以单片机为主的智能小车在巡查、仓储、探险及国防等领域得到广泛应用。本文设计了一种基于单片机的智能寻光小车,该小车以STC89C52RC 芯片为设计核心,结合光敏传感器和超声波传感器等多…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
