Write a program to decrypt string from alphabet to integer mapping

The problem:

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 #1

Input: s = "1326#"
Output: "acz"

The solution:

    const getMappedString = (str) => {
        let numMap = {}, output = '';
        [...Array(26)].forEach((x,i) => {
            numMap[i+1] =  String.fromCharCode(i + 97)
        });
        for(let i = str.length - 1; i >= 0; i--) {
            if(str[i] === '#') {
                output = numMap[str[i - 2] + str[i - 1]] + output;
                i -= 2;
            } else {
                output = numMap[str[i]] + output;
            }
        }
        return output;
    }
    const str = "10#11#12";
    getMappedString(str);