Last updated: Oct 24, 2022
Difficulty | Runtime | Faster_than | Memory | Lesser_than |
---|---|---|---|---|
medium | 69 ms | 85.77 % | 41.9 mb | 75.19 % |
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;
},
[''],
);
};