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