LeetCode 925. 長按鍵入

原題地址925. 長按鍵入


你的朋友正在使用鍵盤輸入他的名字 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 的字符都是小寫字母。

算法 

逐個比較,注意typed中出現的一定要在name中有。


代碼 

class Solution:
    def isLongPressedName(self, name, typed):
        """
        :type name: str
        :type typed: str
        :rtype: bool
        """
        if len(name) > len(typed):
            return False
        i, j, lastname = 0, 0, ''
        while i < len(name) and j < len(typed):
            if name[i] == typed[j]:
                lastname = name[i]
                i += 1
                j += 1
            elif typed[j] == lastname:
                j += 1
            else:
                return False
        if i < len(name):
            return False
        while j < len(typed):
            if typed[j] == lastname:
                j += 1
            else:
                return False
        return True
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章