Decode the Message: 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:
- Use the first appearance of all 26 lowercase English letters in
key
as the order of the substitution table. - Align the substitution table with the regular English alphabet.
- Each letter in
message
is then substituted using the table. - 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.
Decode the Message LeetCode Contest
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".
Example 2:
Input: key = "eljuxhpwnyrdgtqkviszcfmabo", message = "zwx hnfx lqantp mnoeius ycgk vcnjrdb" Output: "the five boxing wizards jump quickly" Explanation: The diagram above shows the substitution table. It is obtained by taking the first appearance of each letter in "eljuxhpwnyrdgtqkviszcfmabo".
Constraints:
26 <= key.length <= 2000
key
consists of lowercase English letters and' '
.key
contains every letter in the English alphabet ('a'
to'z'
) at least once.1 <= message.length <= 2000
message
consists of lowercase English letters and' '
.
Solution
string decodeMessage(string key, string mess) {
char m[128] = {}, cur = 'a';
for (char k : key)
if (isalpha(k) && m[k] == 0)
m[k] = cur++;
for (int i = 0; i < mess.size(); ++i)
mess[i] = m[mess[i]] ?: mess[i];
return mess;
}
string decodeMessage(string key, string mess) {
char m[128] = {}, cur = 'a';
m[' '] = ' ';
for (char k : key)
m[k] = m[k] ?: cur++;
transform(begin(mess), end(mess), begin(mess), [&](char ch){ return m[ch]; });
return mess;
}
public String decodeMessage(String key, String message) {
char[] m = new char[128];
m[' '] = ' ';
char cur = 'a';
for (var k : key.toCharArray())
m[k] = m[k] != 0 ? m[k] : cur++;
return message.chars().mapToObj(i -> String.valueOf(m[i])).collect(Collectors.joining());
}
class Solution:
def decodeMessage(self, key: str, message: str) -> str:
s="abcdefghijklmnopqrstuvwxyz"
s1=""
d={}
j=0
a=""
for i in range(len(key)):
if key[i] not in s1 and key[i]!=' ':
s1+=key[i]
d[key[i]]=s[j]
j+=1
for i in range(len(message)):
if message[i]==' ':
a+=message[i]
else:
a=a+d[message[i]]
return a
Happy Learning – If you require any further information, feel free to contact me.