你的朋友正在使用鍵盤輸入他的名字 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 的字元都是小寫字母。
思路:利用兩個指標up down,從左向右同時遍歷字串,如果兩個指標所指的字元相同則同時右移,如果不相同,說明有可能是重複輸入,這個時候判斷typed中當前指標所指的字元與上乙個字元是否相等,如果想等down右移,up不動,如果不相等就返回false。
tips:
如果兩種輸入的首字母不相同或者最後乙個字母不相同的話直接返回false,考慮這樣的特殊情況會省很多時間。
class solution(object):
def islongpressedname(self, name, typed):
""":type name: str
:type typed: str
:rtype: bool
"""if name[0] != typed[0] or name[-1] != typed[-1]:
return false
up,down = 0,0
while upif name[up] == typed[down]:
up+=1
down+=1
else:
if typed[down] == typed[down-1]:
down+=1
else:
return false
return true
LeetCode 925 長按鍵入
你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...
LeetCode 925 長按鍵入
你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...
leetcode925 長按鍵入
你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...