欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcod17:电话号码的字母组合

程序员文章站 2022-06-05 14:46:08
...

leetcod17:电话号码的字母组合
**思路:和产生集合的所有子集方法类似。
例:‘23’
第一轮:
一:[‘a’,‘b’,‘c’]
遍历第一轮生成的集合,生成第二轮
二:[“ad”,“bd”,“cd”]+[“ae”,“be”,“ce”]+[“af”,“bf”,“cf”]

代码

   #写法一
    class Solution:
        def letterCombinations(self, digits: str) -> List[str]:
            if not digits:
                return []
            b = ['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']   #加两个空字符串是为了查找对应字符更方便(学到了)
            res = ['']
            for i in digits:
                tmp = []     ###每次更新tmp这个临时数组
                for j in b[int(i)]:
                    for z in res:
                        tmp.append((z+j))
                res = tmp

    
    #写法二
    class Solution:
        def letterCombinations(self, digits: str) -> List[str]:
            result = []
            maps = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
            for digit in digits:
                temp = []
                for char in maps[digit]:
                    if len(result) == 0:
                        temp += [char]
                    else:
                        temp += [s+char for s in result]
                result = temp
            return result