
class Solution(object):
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
# 回溯法
# 首先,dics确定数字与字母之间的映射关系
dics = {'2':'abc', '3':'def', '4':'ghi','5':'jkl',
'6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz'}
result = list()
self.backtracking(dics, result, digits, 0, '')
return result
# index这里是遍历digits,并且是树的深度
def backtracking(self, dics, result, digits, index, path):
if not digits:
return []
if index == len(digits):
result.append(path)
return
# 相较于之前的回溯,这里需要先选取集合,然后从集合中遍历取字母
dic = dics[digits[index]]
for i in dic:
path += i
# index+1代表去下一个集合遍历
self.backtracking(dics, result, digits, index+1, path)
# 回溯
path = path[:-1]