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:
Copy Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Example 2:
Copy Input: digits = ""
Output: []
Example 3:
Copy Input: digits = "2"
Output: ["a","b","c"]
Copy - combination, backpedelling
- dfs, pre-push, recurse, post-pop
Copy // from solution page, clean code dfs
var letterCombinations = function (digits , res = [] , level = 0 , combo = []) {
const map = {
2 : "abc" ,
3 : "def" ,
4 : "ghi" ,
5 : "jkl" ,
6 : "mno" ,
7 : "pqrs" ,
8 : "tuv" ,
9 : "wxyz" ,
};
// base condition
if ( ! digits) {
return [];
}
// base condition
if ( digits . length === level) {
res .push ( combo .join ( "" ));
return ;
}
// digits is str, is iterable with level/index "23" - starts with "2" level = 0
for ( const c of map[digits[level]]) {
// pre
combo .push (c);
// recurse
letterCombinations (digits , res , level + 1 , combo);
// post
combo .pop ();
}
return res;
};
Time and Space Complexity