1309. Decrypt String from Alphabet to Integer Mapping

Given a string `s` formed by digits (`'0'` - `'9'`) 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.

It's guaranteed 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"
```

Example 3:

```Input: s = "25#"
Output: "y"
```

Example 4:

```Input: s = "12345678910#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#"
Output: "abcdefghijklmnopqrstuvwxyz"
```

Constraints:

• `1 <= s.length <= 1000`
• `s[i]` only contains digits letters (`'0'`-`'9'`) and `'#'` letter.
• `s` will be valid string such that mapping is always possible.

1309. Decrypt String from Alphabet to Integer Mapping
``````struct Solution;

impl Solution {
fn freq_alphabets(s: String) -> String {
let mut v: Vec<char> = vec![];
let mut u: Vec<char> = s.chars().collect();
while let Some(c) = u.pop() {
let d = match c {
'#' => (u.pop().unwrap() as u8 - b'0') + 10 * (u.pop().unwrap() as u8 - b'0'),
_ => c as u8 - b'0',
} - 1;
v.insert(0, (b'a' + d) as char);
}
v.iter().collect()
}
}

#[test]
fn test() {
let s = "10#11#12".to_string();
let res = "jkab".to_string();
assert_eq!(Solution::freq_alphabets(s), res);
let s = "1326#".to_string();
let res = "acz".to_string();
assert_eq!(Solution::freq_alphabets(s), res);
let s = "25#".to_string();
let res = "y".to_string();
assert_eq!(Solution::freq_alphabets(s), res);
let s = "12345678910#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#".to_string();
let res = "abcdefghijklmnopqrstuvwxyz".to_string();
assert_eq!(Solution::freq_alphabets(s), res);
}
``````