【題目】
你的朋友正在使用鍵盤輸入他的名字 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 的字元都是小寫字母。
【**】
【python】
執行用時:
48 ms, 在所有 python3 提交中擊敗了17.07%的使用者
記憶體消耗:
15 mb, 在所有 python3 提交中擊敗了9.75%的使用者
class
solution
:def
islongpressedname
(self, name:
str, typed:
str)
->
bool
: name+=
"1" first=name[0]
name_char,name_cnt,typed_char,typed_cnt,cnt=
,,,[
],0for c in name:
if c==first:
cnt+=
1else
: cnt=
1 first=c
first,cnt=typed[0]
,0typed+=
'1'for c in typed:
if c==first:
cnt+=
1else
: cnt=
1 first=c
#資料準備完畢
name=name[:-
1]typed=typed[:-
1]iflen
(typed_char)
!=len
(name_char)
:return
false
else
: l=
len(typed_char)
for i in
range
(l):
if name_cnt[i]
>typed_cnt[i]
or name_char[i]
!=typed_char[i]
:return
false
return
true
925 長按鍵入
解題思路 1.在typed中查詢name中的字元,分別遍歷兩個字串,如果在typed中有name中的字元,則flag true,並迴圈查詢直到遇到與當前name中的字元不相等的字元,此時的計數器為num2 2.迴圈遍歷name中的字元,直到遇到前後兩個字元不相等的字元,則開始下一輪遍歷,記錄name...
925 長按鍵入
你的朋友正在使用鍵盤輸入他的名字name。偶爾,在鍵入字元c時,按鍵可能會被長按,而字元可能會被輸入1次或多次。檢查鍵盤輸入的字元typed,如果它對應的可能是你的朋友的名字 其中一些字元可能會被長按 那麼就返回true。思路 該題使用了雙指標的思想。考慮題意是某個字元可以長按而不是可以按錯字元,出...
925 長按鍵入
你的朋友正在使用鍵盤輸入他的名字 name。偶爾,在鍵入字元 c 時,按鍵可能會被長按,而字元可能被輸入 1 次或多次。你將會檢查鍵盤輸入的字元 typed。如果它對應的可能是你的朋友的名字 其中一些字元可能被長按 那麼就返回 true。示例 1 輸入 name alex typed aaleex ...