原題地址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