【字符串-简单】925. 长按键入

本文介绍了一种Python方法,用于检测朋友在输入名字时是否可能出现的字符长按情况,通过比较给定的名字和输入的字符串,判断是否匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题目】
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。
你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
【示例 1】
输入:name = “alex”, typed = “aaleex”
输出:true
解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。
【示例 2】
输入:name = “saeed”, typed = “ssaaedd”
输出:false
解释:‘e’ 一定需要被键入两次,但在 typed 的输出中不是这样。
【示例 3】
输入:name = “leelee”, typed = “lleeelee”
输出:true
【示例 4】
输入:name = “laiden”, typed = “laiden”
输出:true
解释:长按名字中的字符并不是必要的。
【提示】
name.length <= 1000
typed.length <= 1000
name 和 typed 的字符都是小写字母。
【代码】
【Python】
执行用时:
48 ms, 在所有 Python3 提交中击败了17.07%的用户
内存消耗:
15 MB, 在所有 Python3 提交中击败了9.75%的用户

class Solution:
    def isLongPressedName(self, name: str, typed: str) -> bool:
        name+="1"
        first=name[0]
        name_char,name_cnt,typed_char,typed_cnt,cnt=[],[],[],[],0
        for c in name:
            if c==first:
                cnt+=1
            else:
                name_char.append(first)
                name_cnt.append(cnt)
                cnt=1
                first=c
        first,cnt=typed[0],0
        typed+='1'
        for c in typed:
            if c==first:
                cnt+=1
            else:
                typed_char.append(first)
                typed_cnt.append(cnt)
                cnt=1
                first=c
        #数据准备完毕
        name=name[:-1]
        typed=typed[:-1]
        if len(typed_char)!=len(name_char):
            return False
        else:
            l=len(typed_char)
            for i in range(l):
                if name_cnt[i]>typed_cnt[i] or name_char[i]!=typed_char[i]:
                    return False
            return True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值