Last updated: Oct 24, 2022
Difficulty : medium
Runtime : 69 ms Faster than 85.77 %
Memory : 41.9 mb Lesser than 75.19 %

# 17. Letter Combinations of a Phone Number

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 = "" Output: [] Example 3:

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

Constraints:

• 0 <= digits.length <= 4
• digits[i] is a digit in the range ['2', '9'].

## solution:

``````/**
* @param {string} digits
* @return {string[]}
*/

var padLetters = {
2: 'abc',
3: 'def',
4: 'ghi',
5: 'jkl',
6: 'mno',
7: 'pqrs',
8: 'tuv',
9: 'wxyz',
};

var letterCombinations = function (digits) {
if (digits === '') {
return [];
}

// run a reducer on each digit and return accumulated result
return [...digits].reduce(
(prev, curr) => {
var result = [];
var lettersArr = [...padLetters[curr]];

for (var i = 0; i < prev.length; i++) {
for (var j = 0; j < lettersArr.length; j++) {
result.push(prev[i] + lettersArr[j]);
}
}
return result;
},
[''],
);
};
``````