/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function (digits) {
if (digits === null || digits.length === 0) {
return [];
} else {
return deep("", digits);
}
};
const deep = function (start, str) {
let ans = [];
const arr = getStrArr(str[0]);
if (str.length === 1) {
for (let i = 0; i < arr.length; i++) {
ans.push(start + arr[i]);
}
} else {
for (let i = 0; i < arr.length; i++) {
ans = ans.concat(deep(start + arr[i], str.substring(1)));
}
}
return ans;
}
const getStrArr = function (c) {
switch (c) {
case '2':
return ['a', 'b', 'c'];
case '3':
return ['d', 'e', 'f'];
case '4':
return ['g', 'h', 'i'];
case '5':
return ['j', 'k', 'l'];
case '6':
return ['m', 'n', 'o'];
case '7':
return ['p', 'q', 'r', 's'];
case '8':
return ['t', 'u', 'v'];
case '9':
return ['w', 'x', 'y', 'z'];
default:
return [];
}
}