LeetCode
LeetCode 17 Letter Combinations Of A Phone Number - Medium
17. Letter Combinations of a Phone Number
17. Letter Combinations Of A Phone Number — Medium
Problem
- Letter Combinations of a Phone Number
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example:
Input: "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
Solution
### Recursive DFS:
KEYBOARD = {
'2':'abc',
'3':'def',
'4':'ghi',
'5':'jkl',
'6':'mno',
'7':'pqrs',
'8':'tuv',
'9':'wxyz'
}
class Solution:
def letterCombinations(self, digits):
if not digits:
return []
res = []
self.dfs(digits, 0, [], res)
return res
def dfs(self, digits, start, chars, res):
if start == len(digits):
### 通过创建string 完成类似deepcopy的操作。
res.append(''.join(chars))
return
for letter in KEYBOARD[digits[start]]:
chars.append(letter)
self.dfs(digits, start + 1, chars, res)
chars.pop()