Letter Combinations of a Phone Number

Problem Description

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.

A mapping of digits to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

 

Example 1:

Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]

Example 2:

Input: digits = "2"
Output: ["a","b","c"]

 

Constraints:

Solution (JavaScript)

/**
 * @param {string} digits
 * @return {string[]}
 */
let letterCombinations = function(digits) {
    const map = {
		"2": ["a", "b", "c"],
		"3": ["d", "e", "f"],
		"4": ["g", "h", "i"],
		"5": ["j", "k", "l"],
		"6": ["m", "n", "o"],
		"7": ["p", "q", "r", "s"],
		"8": ["t", "u", "v"],
		"9": ["w", "x", "y", "z"]
	};
    
    function appendLetter(pee, per) {
        let a = [];
        for(let i = 0; i < pee.length; i++){
            for(let j = 0; j < per.length; j++){
                a.push(pee[i] + per[j]);
            }    
        }
        return a;
    }
    
    function combLetter(arr, nums) {
        if(!nums) {
            return arr;
        }
        return combLetter(appendLetter(arr, map[nums[0]]), nums.slice(1));
    }
    
    if(!digits)
        return [];
    return combLetter(map[digits[0]], digits.slice(1));
};