Problem
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.
解题思路
没什么好说的,标准的深度优先搜索(或者宽度优先搜索)。这里我们选择深度优先搜索,因为代码比较简洁。
代码如下:
class Solution:
def letterCombinations(self, digits: str):
d = {'2': "abc",
'3': "def",
'4': "ghi",
'5': "jkl",
'6': "mno",
'7': "pqrs",
'8': "tuv",
'9': "wxyz"}
ans = []
def dfs(combs, pos):
nonlocal ans
if pos == len(digits):
ans.append(combs)
return
for c in d[digits[pos]]:
dfs(combs + c, pos + 1)
dfs("", 0)
return ans