57.电话号码的字母组合
class Solution(object):def __init__(self):self.letterMap =["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]self.ans = []self.path = ""def backtracking(self,digits,index):if index == len(digits):self.ans.append(self.path)returndigit = int(digits[index])letter = self.letterMap[digit]for c in letter:self.path+=cself.backtracking(digits,index+1)#去掉最后一个 回溯self.path=self.path[:-1]def letterCombinations(self, digits):""":type digits: str:rtype: List[str]"""#创建数字映射字符串的list#不对(因为自己不能和自己组合):拼接digits对应的字符串得到新字符串,然后对其使用backtracking(str,startIndex) 结束。对于“23”:第1个映射,从中取一个字母(一层),下一层是另一个映射,也取一个字母,两者组合起来,叶子结点就是结果集。递归深度也就是for的个数#这个index是记录遍历第几个数字了,就是用来遍历digits的(题目中给出数字字符串),同时index也表示树的深度。index==digits.size()终止if len(digits)==0:return self.ansself.backtracking(digits,0)return self.ans