Сложность: medium
Учитывая строку, содержащую цифры от 2 до 9 включительно, верните все возможные комбинации букв, которые может представлять число. Верните ответ в любом порядке. Соответствие цифр буквам (как на кнопках телефона) приведено ниже. Обратите внимание, что 1 не соответствует никаким буквам.
Пример:
Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
👨💻 Алгоритм:
1⃣Создать отображение цифр в буквы, как на телефонной клавиатуре.
2⃣Использовать рекурсию или очередь для генерации всех возможных комбинаций.
3⃣Вернуть итоговый список комбинаций.
😎 Решение:
class Solution {
private let mat: [Character: [String]] = [
"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"]
]
func letterCombinations(_ digits: String) -> [String] {
guard !digits.isEmpty else { return [] }
var res = [""]
for digit in digits {
guard let letters = mat[digit] else { continue }
res = res.flatMap { prefix in letters.map { prefix + $0 } }
}
return res
}
}Ставь 👍 и забирай 📚 Базу знаний