3029. 将单词恢复初始状态所需的最短时间 I

简介: 3029. 将单词恢复初始状态所需的最短时间 I

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

给你一个下标从 0 开始的字符串 word 和一个整数 k

在每一秒,你必须执行以下操作:

  • 移除 word 的前 k 个字符。
  • word 的末尾添加 k 个任意字符。

注意 添加的字符不必和移除的字符相同。但是,必须在每一秒钟都执行 两种 操作。

返回将 word 恢复到其 初始 状态所需的 最短 时间(该时间必须大于零)。

示例 1:

输入: word = "abacaba", k = 3
输出: 2
解释:
第 1 秒,移除 word 的前缀 "aba",并在末尾添加 "bac" 。因此,word 变为 "cababac"。
第 2 秒,移除 word 的前缀 "cab",并在末尾添加 "aba" 。因此,word 变为 "abacaba" 并恢复到始状态。
可以证明,2 秒是 word 恢复到其初始状态所需的最短时间。

示例 2:

输入: word = "abacaba", k = 4
输出: 1
解释: 第 1 秒,移除 word 的前缀 "abac",并在末尾添加 "caba" 。因此,word 变为 "abacaba" 并恢复到初始状态。
可以证明,1 秒是 word 恢复到其初始状态所需的最短时间。

示例 3:

输入: word = "abcbabcd", k = 2
输出: 4
解释:
每一秒,我们都移除 word 的前 2 个字符,并在 word 末尾添加相同的字符。
4 秒后,word 变为 "abcbabcd" 并恢复到初始状态。
可以证明,4 秒是 word 恢复到其初始状态所需的最短时间。

提示:

  • 1 <= word.length <= 50
  • 1 <= k <= word.length
  • word仅由小写英文字母组成。

解题思路

首先我们需要先理解一下题目意思,题目要求我们每1秒都要同时执行一次一下操作:

  • 移除 word 的前 k 个字符。
  • word 的末尾添加 k 个任意字符。

我们以示例 1 word = "abacaba", k = 3来分析一下:

  • 第一秒

移除前3个字符,我们可以得到:caba

在末尾加上任意3个字符,这里我们使用.来代替,我们可以得到:caba...

无法得到原字符串一样的字符,继续

  • 第二秒

移除前3个字符,我们可以得到:a...

在末尾加上任意3个字符,这里我们使用.来代替,我们可以得到:a......

可以得到原字符串一样的字符,结束。

在上面例子中我们可以清晰看出,.可以代替任意字符,相当于我们只需要确保前面不是.的字符串和原字符串相同即可,这样我们便可以开始编写代码了。

AC代码

/**
 * @param {string} word
 * @param {number} k
 * @return {number}
 */
var minimumTimeToInitialState = function (word, k) {
  let cnt = 1;
  while (k * cnt < word.length) {
    const tmpWord = word.slice(k * cnt);
    if (word.startsWith(tmpWord)) return cnt;
    cnt++;
  }
  return cnt;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
网络协议 安全 网络性能优化
|
Web App开发 JavaScript
Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码
Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码
1441 0
|
小程序 安全 JavaScript
从零开始uniapp微信小程序项目到发布(超级详细)
最近微信小程序又掀起一波风潮,本文站在新手的角度出发,比较适合第一次使用uniapp 开发微信小程序的伙伴,或者没有过实战经验的小伙伴参考,从零搭建uniapp小程序项目
2927 1
|
5月前
|
人工智能 自然语言处理 安全
国内版“Manus”Aipy,轻松get IDA PRO平替神器,简单又高效!
IDA Pro是一款专业逆向分析工具,支持多架构反汇编/反编译(含Hex-Rays伪代码转换)、静态分析(调用图/控制流图)、动态调试和插件扩展,尤其擅长恶意代码分析。针对新手用户,可使用AI辅助工具(如Aipy)实现轻量化自动分析,替代IDA完成基础反编译任务。示例任务成功反编译a.exe并生成分析报告,验证了简化流程的可行性。
|
XML JSON 供应链
解锁电商运营新高度:亚马逊商品详情数据接口详解
亚马逊商品详情数据接口是电商运营的关键桥梁,连接商家与消费者,确保商品信息精准传递与高效管理。它具备数据准确性、实时性、安全性和丰富性等特点,能提升流量、增加转化率,并优化搜索排名。适用于商品展示、营销推广及库存管理等多种场景,且接口稳定、可扩展,有助于商家在竞争激烈的市场中占据优势,实现可持续发展。
|
监控 开发者
鸿蒙5.0版开发:使用HiLog打印日志(ArkTS)
在HarmonyOS 5.0中,HiLog是系统提供的日志系统,支持DEBUG、INFO、WARN、ERROR、FATAL五种日志级别。本文介绍如何在ArkTS中使用HiLog打印日志,并提供示例代码。通过合理使用HiLog,开发者可以更好地调试和监控应用。
843 16
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
590 2
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
9517 1
|
存储 安全 Java
Spring Boot中的配置文件加密
Spring Boot中的配置文件加密
|
SQL 分布式计算 Oracle
sqoop用法之mysql与hive数据导入导出
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL、Oracle、Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。对于某些NoSQL数据库它也提供了连接器。Sqoop,类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
1647 0