LeetCode 925 長按鍵入 Python3

2021-10-25 02:03:55 字數 1408 閱讀 3755

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

用雙指標進行遍歷,從name和typed的第乙個字母開始判斷,當遇到不一樣的字母時,判斷typed中是否為長按(和name的前乙個字母是否相同),應注意對於尾部邊界的處理。

class

solution

:def

islongpressedname

(self, name:

str, typed:

str)

->

bool

: i, j =0,

0#雙指標

while j <

len(typed)

:#相應位置字母相同時:

if i <

len(name)

and name[i]

== typed[j]

: i +=

1 j +=

1#相應位置字母不同時,比較是否為長按輸入:

elif j >

0and typed[j]

== typed[j -1]

: j +=

1#不相同也不是長按時:

else

:return

false

#驗證name是否判斷完整

return i ==

len(name)

主要的問題就是對 i 和 j 的移動位置要考慮清楚,在最後要注意是否已經匹配完成,剛開始就是因為對 j 的考慮不完善一直沒能通過,之後借鑑了題解裡的思路才完成。。。

LeetCode925 長按鍵入

你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...

LeetCode 925 長按鍵入

你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...

LeetCode 925 長按鍵入

你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...