925 長按鍵入(Python)

2021-10-25 02:10:07 字數 1391 閱讀 5065

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