Open zentan66 opened 3 years ago
var letterCombinations = function (digits) {
const keyMap = [
['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i'],
['j', 'k', 'l'],
['m', 'n', 'o'],
['p', 'q', 'r', 's'],
['t', 'u', 'v'],
['w', 'x', 'y', 'z'],
]
const res = []
digits = digits.split('')
function dfs(idx, prefixStr) {
const list = keyMap[digits[idx] - 2]
if (!list) return;
for (const k of list) {
if (idx === digits.length - 1) {
res.push(`${prefixStr}${k}`)
} else {
dfs(idx + 1, `${prefixStr}${k}`)
}
}
}
dfs(0, '')
return res
}
合理利用深度搜索算法
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
难度:⭐️⭐️