你的朋友正在使用鍵盤輸入他的名字 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[i] 和 typed[j]相同,則i++,j++ (繼續向後對比)
name[i] 和 typed[j]不相同
看是不是第一位就不相同了,也就是j如果等於0,那麼直接返回false
不是第一位不相同,就讓j跨越重複項,移動到重複項之後的位置,再次比較name[i] 和typed[j]
如果 name[i] 和 typed[j]相同,則i++,j++ (繼續向後對比)
不相同,返回false
對比完之後有兩種情況
name沒有匹配完,例如name:「pyplrzzzzdsfa」 type:「ppyypllr」
type沒有匹配完,例如name:「alex」 type:「alexxrrrrssda」
下面上**:
class
solution
:def
islongpressedname
(self, name:
str, typed:
str)
->
bool
: m, n =
len(name)
,len
(typed)
i = j =
0while j < n:
if i < m and name[i]
== typed[j]
: i +=
1elif j ==
0or typed[j-1]
!= typed[j]
:# 判斷是否長按
return
false
j +=
1return i == m
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 ...