У меня есть вопрос о буквенных сочетаниях клавиш клавиатуры телефона в JavaScript.Я написал решение с использованием рекурсии DFS.Но это не работает, как ожидалось.Я новичок в JavaScript, но аналогично написанный код на Ruby работает.
Проблема в том, чтобы получить все возможные комбинации букв с клавиатуры телефона.
Ввод: "23"
Вывод: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
С кодом ниже, он останавливается на «аф».Вывод: ["ad", "ae", "af"].Я не уверен, почему этот код не перемещается на вторую букву «2», то есть «b».
const map = {
"2": ["a", "b", "c"],
"3": ["d", "e", "f"],
"4": ["g", "h", "i"],
"5": ["j", "k", "l"],
"6": ["m", "n", "o"],
"7": ["p", "q", "r", "s"],
"8": ["t", "u", "v"],
"9": ["w", "x", "y", "z"]
};
let result = [];
let letterCombinations = function(digits) {
if (digits.length == 0) {
return []
};
let stack = [];
dfs(digits.split(''), 0, stack)
return result
};
function dfs(digits, index, stack) {
const currentLetters = map[digits[index]]
for (i = 0; i < currentLetters.length; i++) {
stack.push(currentLetters[i])
if (index == digits.length - 1) {
result.push(stack.join(''))
stack.pop()
} else {
dfs(digits, index + 1, stack)
stack.pop()
}
}
}
console.log(letterCombinations("23"));