主題

LeetCode - 925. Long Pressed Name 解題心得

Not In My Back Yard | 2021-02-15 00:00:02 | 巴幣 0 | 人氣 18

題目連結:


題目意譯:
你的朋友正藉由鍵盤輸入他的名字。有些時候,當在打一個字元 c 時,按鍵可能會被長按,因此該字元會變成輸入 1 次或多次。

你試圖檢驗朋友從鍵盤打入的字元 typed。回傳真(True)如果其可能為你朋友的名字,其伴隨著某些字元(可能沒有)被長按。

限制:
1 ≦ name.length ≦ 1000
1 ≦ typed.length ≦ 1000
name 和 typed 只包含小寫英文字母。



範例測資:
範例 1:
輸入: name = "alex", typed = "aaleex"
輸出: true
解釋: 'a' 和 'e' 於 "alex" 被長按了。

範例 2:
輸入: name = "saeed", typed = "ssaaedd"
輸出: false
解釋: 'e' 被按了兩次,但是其並沒有出現於輸出 typed 中。

範例 3:
輸入: name = "leelee", typed = "lleeelee"
輸出: true

範例 4:
輸入: name = "laiden", typed = "laiden"
輸出: true
解釋: 不須長按任何字元。


解題思維:
作法有點像判斷一個字串是否為另一個字串的子序列(對於本題就是檢查 name 是否為 typed 的子序列),如這題

但是除了 name 要是 typed 的子序列以外,typed 中沒有對應到 name 的其他字元應等於其左側或右側之被對應的字元(否則代表輸入的文字 typed 不是在打朋友的名字)。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作