python-leetcode-1629. 按键持续时间最长的键

1629. 按键持续时间最长的键 - 力扣(LeetCode)

这是一道关于字符串和数组操作的题,考察如何处理时间差并进行最大值比较。可以逐个计算每次按键的持续时间,并记录当前最长持续时间的键

解题思路:

  1. 初始化最长持续时间为 releaseTimes[0],最长持续时间的按键为 keysPressed[0]

  2. 从第 1 个键开始遍历 releaseTimeskeysPressed

    • 计算当前键的持续时间:releaseTimes[i] - releaseTimes[i - 1]

    • 如果持续时间 > 当前最大持续时间,更新持续时间和按键

    • 如果持续时间 == 当前最大持续时间,比较按键字母顺序,取字母较大的那个('c' > 'a'

Python 代码实现:

def slowestKey(releaseTimes, keysPressed):
    max_duration = releaseTimes[0]
    result_key = keysPressed[0]

    for i in range(1, len(releaseTimes)):
        duration = releaseTimes[i] - releaseTimes[i - 1]
        if duration > max_duration or (duration == max_duration and keysPressed[i] > result_key):
            max_duration = duration
            result_key = keysPressed[i]

    return result_key

示例:

releaseTimes = [9, 29, 49, 50]
keysPressed = "cbcd"
# 输出: "c"

因为 'c' 在第二次被按下时,持续了 20ms,是最长的一次按键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值