LeetCode925 長按鍵入

2021-09-23 01:36:21 字數 1287 閱讀 6533

你的朋友正在使用鍵盤輸入他的名字 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 ...