题目

LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。
给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表,其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始 。第 0 个键在时间为 0 时被按下,接下来每个键都 恰好 在前一个键松开时被按下。
测试人员想要找出按键 持续时间最长 的键。第 i 次按键的持续时间为 releaseTimes[i] - releaseTimes[i - 1] ,第 0 次按键的持续时间为 releaseTimes[0] 。
注意,测试期间,同一个键可以在不同时刻被多次按下,而每次的持续时间都可能不同。
请返回单次按键 持续时间最长 的键,如果有多个这样的键,则返回 按字母顺序排列最大 的那个键。
示例 1:
输入:releaseTimes = [9,29,49,50], keysPressed = “cbcd”
输出:“c”
解释:按键顺序和持续时间如下:
按下 ‘c’ ,持续时间 9(时间 0 按下,时间 9 松开)
按下 ‘b’ ,持续时间 29 - 9 = 20(松开上一个键的时间 9 按下,时间 29 松开)
按下 ‘c’ ,持续时间 49 - 29 = 20(松开上一个键的时间 29 按下,时间 49 松开)
按下 ‘d’ ,持续时间 50 - 49 = 1(松开上一个键的时间 49 按下,时间 50 松开)
按键持续时间最长的键是 ‘b’ 和 ‘c’(第二次按下时),持续时间都是 20
‘c’ 按字母顺序排列比 ‘b’ 大,所以答案是 ‘c’
示例 2:
输入:releaseTimes = [12,23,36,46,62], keysPressed = “spuda”
输出:“a”
解释:按键顺序和持续时间如下:
按下 ‘s’ ,持续时间 12
按下 ‘p’ ,持续时间 23 - 12 = 11
按下 ‘u’ ,持续时间 36 - 23 = 13
按下 ‘d’ ,持续时间 46 - 36 = 10
按下 ‘a’ ,持续时间 62 - 46 = 16
按键持续时间最长的键是 ‘a’ ,持续时间 16
提示:
releaseTimes.length == n
keysPressed.length == n
2 <= n <= 1000
1 <= releaseTimes[i] <= 10^9
releaseTimes[i] < releaseTimes[i+1]
keysPressed 仅由小写英文字母组成
来源:力扣(LeetCode)

解题思路

  只需要同时遍历数组和字符串,计算出当前字符按键时常,然后按照规则更新最大值即可。

class Solution:def slowestKey(self, releaseTimes: List[int], keysPressed: str) -> str:releaseTimes.insert(0,0) #为方便计算差值列表加入0MAX=(0,'Z')  #最大值for i in range(1,len(releaseTimes)):  #按照规则更新最大值if releaseTimes[i]-releaseTimes[i-1]>MAX[0]:MAX=(releaseTimes[i]-releaseTimes[i-1],keysPressed[i-1])elif releaseTimes[i]-releaseTimes[i-1]==MAX[0] and keysPressed[i-1]>MAX[1]:MAX=(MAX[0],keysPressed[i-1])return MAX[1]

LeetCode简单题之按键持续时间最长的键相关推荐

  1. LeetCode 1629. 按键持续时间最长的键

    文章目录 1. 题目 2. 解题 1. 题目 LeetCode 设计了一款新式键盘,正在测试其可用性.测试人员将会点击一系列键(总计 n 个),每次一个. 给你一个长度为 n 的字符串 keysPre ...

  2. LeetCode简单题之词典中最长的单词

    题目 给出一个字符串数组words组成的一本英语词典.从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成.若其中有多个可行的答案,则返回答案中字典序最小的单词. 若无答案, ...

  3. LeetCode简单题之长按键入

    题目 你的朋友正在使用键盘输入他的名字 name.偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次. 你将会检查键盘输入的字符 typed.如果它对应的可能是你的朋友的名字( ...

  4. LeetCode简单题之最长特殊序列 Ⅰ

    题目 给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 .如果不存在,则返回 -1 . 「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) ...

  5. LeetCode简单题之最长回文串

    题目 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 . 在构造过程中,请注意 区分大小写 .比如 "Aa" 不能当做一个回文字符串. 示例 ...

  6. LeetCode简单题之最长和谐子序列

    题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 . 现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度. 数组的子序列是一个由数组派生出来的 ...

  7. LeetCode简单题之最长的美好子字符串

    题目 当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串.比方说,"abABB" 是美好字符串,因为 'A' 和 'a' ...

  8. LeetCode简单题之图片平滑器

    题目 包含整数的二维矩阵 M 表示一个图片的灰度.你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽 ...

  9. LeetCode简单题之基于排列构建数组

    题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...

最新文章

  1. dhcp报文_动态地址分配DHCP,IP地址管理方式及分配原则,一分钟了解下
  2. oracle列名无效字符,案例学习Oracle错误:ORA-00904 invalid column name
  3. 一文了解物联网主控芯片架构之争
  4. Bootstrap+PHP实现多图上传
  5. JavaScript (二)
  6. python与编码方式
  7. 数学--数论--最小公倍数+最大公约数
  8. excel实战应用案例100讲(四)-Excel玩转数据:从分析到可视化
  9. Kubernetes 入门(1)基本概念
  10. 电脑网络怎么添加计算机,Win10系统如何添加网络共享打印机
  11. oracle 定时器时间分区_Oracle数据库之oracle按时间分区以及自动分区
  12. TikTok独立站该怎么布局?
  13. Silverlight 2.0学习笔记——RIAs的缺点
  14. 廖雪峰python笔记
  15. Microsoft office2016(专业增强版) 安装错误,报CRT(KB2999226)错误,详细解决方法
  16. java打印输出羞漫画
  17. 聚类分析在用户行为中的实例_聚类分析案例之市场细分
  18. 大数据——Flink Window(窗口)机制
  19. 4.外部协作单位的组织与管理
  20. 事务的传播行为propagation(讲得比较好)

热门文章

  1. 【阶段小结】协同开发——这学期的Git使用小结
  2. 2021-2027年中国医疗旅游业投资分析及前景预测报告
  3. vs2012常用快捷键
  4. jquery过滤HTML标签方法
  5. dataframe重命名
  6. flash,tornada demo
  7. LeetCode简单题之作为子字符串出现在单词中的字符串数目
  8. SpringBoot-web开发(二): 页面和图标定制(源码分析)
  9. 基于Jittor框架实现LSGAN图像生成对抗网络
  10. 使用Runtime执行推理(C++)