17. 电话号码的字母组合

class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        # 233
        #           0  1     2      3     4       5      6        7       8     9
        self.ss = ['', '', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
        self.dights = digits
        self.res = []
        self.trackback('',0)
        return self.res


    def trackback(self,temp,index):
        # temp 表示暂存的字符串
        # index 表示现在的位数
        if index == len(self.dights):
            self.res.append(temp)
            return # 结束
        # 第index位取数
        c = self.dights[index]
        c = int(c)
        for i in self.ss[c]:
            self.trackback(temp+i,index+1)

"""
  def backtrack():
        if xxxxx:
            result.append(path)
        for xxxxx:
            backtrack()
  backtrack()
  return result
"""
if __name__ == '__main__':
    S = Solution()
    print(S.letterCombinations('777'))

递归法,这种东西能够体现出美。

  def backtrack():
        if xxxxx:#这是结束条件
            result.append(path) # 状态更新
            return
        for xxxxx:# 遍历条件
            backtrack()# 递归状态
  backtrack() # 开始条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值