Given a string containing digits from 2-9
inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.
A mapping of digits to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example 1:
Input: digits = "23" Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Example 2:
Input: digits = "" Output: []
Example 3:
Input: digits = "2" Output: ["a","b","c"]
Constraints:
0 <= digits.length <= 4
digits[i]
is a digit in the range['2', '9']
.
Explanation:
Base Case:
If
digits
is empty, return an empty array.phoneMap
:Maps each digit (2-9) to its corresponding letters.
Backtracking (
backtrack
):index
: Tracks the current position in thedigits
string.path
: Holds the current combination as an array of characters.path.length
equalsdigits.length
, it forms a valid combination and is pushed toresult
.Output:
["ad","ae","af","bd","be","bf","cd","ce","cf"]
[]
["a","b","c"]
This solution uses DFS (Depth-First Search) with backtracking and has a time complexity of O(4^n), where n is the length of
digits
(since some digits map to up to 4 letters, e.g., ‘7’ and ‘9’).