var letterCombinations = function (digits) { if (!digits) return [] const map = new Map([ ["1", ""], ["2", "abc"], ["3", "def"], ["4", "ghi"], ["5", "jkl"], ["6", "mno"], ["7", "pqrs"], ["8", "tuv"], ["9", "wxyz"], ]) const list = [] backtrack(list, "", 0) return list function backtrack(list, temp, num) { if (num === digits.length) { list.push(temp) return } const cur = map.get(digits[num]) for (let i = 0; i < cur.length; i++) { temp += cur[i] backtrack(list, temp, num + 1) temp = temp.slice(0, -1) } }};