前往
大廳
主題

LeetCode - 2325. Decode the Message 解題心得

Not In My Back Yard | 2023-05-31 12:00:01 | 巴幣 100 | 人氣 177

題目連結:


題目意譯:
你被給定兩個字串 key 以及 message,其依序代表著一個加密密鑰以及一個秘密訊息。解密訊息的步驟為以下:
將全部 26 個英文字母在 key 中的第一次出現位置,這些位置將依序作為替換字母表的排列順序、
將替換字母表與一般的字母表對齊、
message 中每個字母接著從上列列表來替換成別的字母、
空白 ' ' 將替換成自身。

例如,給定 key = "happy boy"(實際上的 key 將會有每一種字母都出現於其中),我們有著部分的替換列表('h' → 'a' 、 'a' → 'b' 、 'p' → 'c' 、 'y' → 'd' 、 'b' → 'e' 、 'o' → 'f')。

回傳解密後的訊息。

限制:
26 ≦ key.length ≦ 2000
key 由小寫英文字母以及 ' ' 組成。
key 包含字母表中每一個字母('a' 到 'z')至少一次。
1 ≦ message.length ≦ 2000
message 由小寫英文字母以及 ' ' 組成。



範例測資:
範例 1:
輸入: key = "the quick brown fox jumps over the lazy dog", message = "vkbs bs t suepuv"
輸出: "this is a secret"
解釋: 上圖顯示了替換字母表。
其由每個字母在 "the quick brown fox jumps over the lazy dog" 中的第一次出現的位置所形成。

範例 2:
輸入: key = "eljuxhpwnyrdgtqkviszcfmabo", message = "zwx hnfx lqantp mnoeius ycgk vcnjrdb"
輸出: "the five boxing wizards jump quickly"
解釋: 上圖顯示了替換字母表。
其由每個字母在 "eljuxhpwnyrdgtqkviszcfmabo" 中的第一次出現的位置所形成。


解題思維:
就是單純地模擬(即照著題目做)即可。

掃過一次 key,然後把目前沒有出現過的字母種類放到替換字母表中(因為先出現的字母,應排到替換表中的前面)。

然後根據替換字母表把 message 替換每一個字母即可。




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

創作回應

相關創作

更多創作