學習日記 LeetCode 925 長按鍵入

2021-10-25 02:22:31 字數 1237 閱讀 8285

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

解釋:長按名字中的字元並不是必要的。

雙指標(最近力扣好多雙指標的題。。還是雙指標可以解決的題比較多?)

思路一:雙指標

乙個指標指著第一串,另乙個指著第二串。如果當前位置字元一樣,都向前進一位,如果不同,按照題目的特殊性,不同的正常情況應該是:第二個指標所指的字元應該和前面乙個一樣才對。到了最後,如果想要輸出true,第一串字元必須是完全被遍歷完的,即第乙個指標應該指著第一串的最後乙個字元的後面乙個位置(i == nlength)。

我的**

bool islongpressedname

(char

* name,

char

* typed)

if(name[i]

!= typed[j]

||(i >= nlength && jreturn i>=nlength;

}

錯處與修改

能完成題目要求,但是**不夠精簡。很多條件是可以合併成一種情況的。

思路一:

bool islongpressedname

(char

* name,

char

* typed)

else

if(j >

0&& typed[j]

== typed[j -1]

)else

}return i == n;

}

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 ...