1309. Decrypt String from Alphabet to Integer Mapping
Description
You are given a string s
formed by digits and '#'
. We want to map s
to English lowercase characters as follows:
- Characters (
'a'
to'i'
) are represented by ('1'
to'9'
) respectively. - Characters (
'j'
to'z'
) are represented by ('10#'
to'26#'
) respectively.
Return the string formed after mapping.
The test cases are generated so that a unique mapping will always exist.
Example 1:
Input: s = "10#11#12" Output: "jkab" Explanation: "j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".
Example 2:
Input: s = "1326#" Output: "acz"
Constraints:
1 <= s.length <= 1000
s
consists of digits and the'#'
letter.s
will be a valid string such that mapping is always possible.
Solution
decrypt-string-from-alphabet-to-integer-mapping.py
class Solution:
def freqAlphabets(self, s: str) -> str:
n = len(s)
i = 0
res = []
while i < n:
if i + 2 < n and s[i + 2] == "#":
c = int(s[i : i + 2]) - 1
res.append(chr(ord('a') + c))
i += 3
else:
c = int(s[i]) - 1
res.append(chr(ord('a') + c))
i += 1
return "".join(res)
decrypt-string-from-alphabet-to-integer-mapping.cpp
class Solution {
public:
string freqAlphabets(string s) {
string res;
for (int i = 0; i < s.size(); ++i) {
if (i < s.size() - 2 && s[i + 2] == '#') {
res += 'j' + (s[i] - '1') * 10 + s[i + 1] - '0';
i += 2;
}
else res += 'a' + (s[i] - '1');
}
return res;
}
};