【Leetcode每日一题】925. 长按键入 (字符串比较)

Leetcode每日一题
题目链接: 925. 长按键入
解题思路: 使用两个指针name_indextyped_index 分别对两个字符串进行遍历,分为以下三种情况:

- 当前两个字符相同并且下一个字符也相同时,同时向后移动一个字符
- 当前两个字符相同并且下一个字符不相同时,typed_index 向后移动一个字符
- 其他情况则为False

最后判断name_indextyped_index 是否的大小是否和字符串长度一致即可。有一个小trick,因为要判断下一个字符,可以在字符最后面加上 $ 防止下标溢出和最后的字符判断。
题解:

class Solution:
    def isLongPressedName(self, name: str, typed: str) -> bool:
        if len(name) == 0:
            return True
        if len(typed) == 0:
            return False

        name += "$"
        typed += "$"
        len_name = len(name) - 1
        len_typed = len(typed) - 1

        name_index, typed_index = 0, 0
        while name_index < len_name and typed_index < len_typed:
            if (name[name_index] == typed[typed_index]) and (name[name_index + 1] == typed[typed_index + 1]):
                typed_index += 1
                name_index += 1
            elif (name[name_index] == typed[typed_index]) and (name[name_index + 1] != typed[typed_index + 1]):
                typed_index += 1
            else:
                break
            
        # print(name_index, typed_index)
        return name_index == len_name and typed_index == len_typed
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值