题目描述:给定一个仅包含数字 2-9 的字符串,返回所有他能表示的字母组合,给出数字到字母的映射如下(与电话按键相同)。
2 :‘abc’, 3 :‘def’, 4 :‘ghi’, 5 :‘jkl’, 6 :‘mno’, 7 :‘pqrs’, 8 :‘tuv’, 9 :‘wxyz’
示例:
输入: “23”
输出: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]
- 我觉得这道题是典型的递归实现不定循环的例子,通过递归遍历所有可能。
def letterCombinations(digits):
if len(digits) == 0:
return []
dic = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl',
'6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz'}
res = []
n = len(digits)
def assist(i, res, temp):
if i == n:
res.append(temp)
return
for num in dic[digits[i]]:
assist(i+1, res, temp+num)
assist(0,res,'')
return res