Welcome to Subscribe On Youtube
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.
Solutions
-
class Solution { public String freqAlphabets(String s) { int i = 0, n = s.length(); StringBuilder res = new StringBuilder(); while (i < n) { if (i + 2 < n && s.charAt(i + 2) == '#') { res.append(get(s.substring(i, i + 2))); i += 3; } else { res.append(get(s.substring(i, i + 1))); i += 1; } } return res.toString(); } private char get(String s) { return (char) ('a' + Integer.parseInt(s) - 1); } }
-
class Solution: def freqAlphabets(self, s: str) -> str: def get(s): return chr(ord('a') + int(s) - 1) i, n = 0, len(s) res = [] while i < n: if i + 2 < n and s[i + 2] == '#': res.append(get(s[i : i + 2])) i += 3 else: res.append(get(s[i])) i += 1 return ''.join(res)
-
function freqAlphabets(s: string): string { const n = s.length; const ans = []; let i = 0; while (i < n) { if (s[i + 2] == '#') { ans.push(s.slice(i, i + 2)); i += 3; } else { ans.push(s[i]); i += 1; } } return ans.map(c => String.fromCharCode('a'.charCodeAt(0) + Number(c) - 1)).join(''); }
-
impl Solution { pub fn freq_alphabets(s: String) -> String { let s = s.as_bytes(); let n = s.len(); let mut res = String::new(); let mut i = 0; while i < n { let code: u8; if s.get(i + 2).is_some() && s[i + 2] == b'#' { code = (s[i] - b'0') * 10 + s[i + 1]; i += 3; } else { code = s[i]; i += 1; } res.push(char::from(('a' as u8) + code - b'1')); } res } }
-
class Solution { public: string freqAlphabets(string s) { string ans = ""; int i = 0, n = s.size(); while (i < n) { if (i + 2 < n && s[i + 2] == '#') { ans += char(stoi(s.substr(i, 2)) + 'a' - 1); i += 3; } else { ans += char(s[i] - '0' + 'a' - 1); i += 1; } } return ans; } };
-
func freqAlphabets(s string) string { var ans []byte for i, n := 0, len(s); i < n; { if i+2 < n && s[i+2] == '#' { num := (int(s[i])-'0')*10 + int(s[i+1]) - '0' ans = append(ans, byte(num+int('a')-1)) i += 3 } else { num := int(s[i]) - '0' ans = append(ans, byte(num+int('a')-1)) i += 1 } } return string(ans) }