# [LeetCode]#2325. Decode the Message

Environment: Python 3.8

Key technique: chr, dictionary

You are given the strings `key` and `message`, which represent a cipher key and a secret message, respectively. The steps to decode `message` are as follows:

1. Use the first appearance of all 26 lowercase English letters in `key` as the order of the substitution table.
2. Align the substitution table with the regular English alphabet.
3. Each letter in `message` is then substituted using the table.
4. Spaces `' '` are transformed to themselves.
• For example, given `key = "happy boy"` (actual key would have at least one instance of each letter in the alphabet), we have the partial substitution table of (`'h' -> 'a'`, `'a' -> 'b'`, `'p' -> 'c'`, `'y' -> 'd'`, `'b' -> 'e'`, `'o' -> 'f'`).

Return the decoded message.

Example 1:

`Input: key = "the quick brown fox jumps over the lazy dog", message = "vkbs bs t suepuv"Output: "this is a secret"Explanation: The diagram above shows the substitution table.It is obtained by taking the first appearance of each letter in "the quick brown fox jumps over the lazy dog".`

Analysis:

1. Generate a dictionary

{‘‘t’: ‘a’, ‘h’: ‘b’, ‘e’: ‘c’, ‘q’: ‘d’, ‘u’: ‘e’, ‘i’: ‘f’, ‘c’: ‘g’, ‘k’: ‘h’, ‘b’: ‘i’, ‘r’: ‘j’, ‘o’: ‘k’, ‘w’: ‘l’, ’n’: ‘m’, ‘f’: ’n’, ‘x’: ‘o’, ‘j’: ‘p’, ‘m’: ‘q’, ‘p’: ‘r’, ‘s’: ‘s’, ‘v’: ‘t’, ‘l’: ‘u’, ‘a’: ‘v’, ‘z’: ‘w’, ‘y’: ‘x’, ‘d’: ‘y’, ‘g’: ‘z’}

2. check message and return as dictionary

Solution:

`class Solution:    def decodeMessage(self, key, message):        res = ''        d = {' ' : ' ',}        i = 97        for char in key:            if char not in d:                d[char] = chr(i)                  i +=1        for char1 in message:            res += d[char1]        return res`

Submissions:

Reference:

https://leetcode.com/problems/decode-the-message/discuss/2779497/Python