NO.17电话号码的字母组合

复制代码
#dfs(深度优先遍历)
#将数字转为字典格式
#定义dfs函数(本质上回溯问题),遍历dic[digit]返回值为dfs()函数,达到遍历的目的
#ps:由于存在空字符串的情况,必须设置加入条件!=''
def letterCombinations(self, digits: str) -> List[str]:
    dic = {'2':['a','b','c'],
        '3':['d','e','f'],
        '4':['g','h','i'],
        '5':['j','k','l'],
        '6':['m','n','o'],
        '7':['p','q','r','s'],
        '8':['t','u','v'],
        '9':['w','x','y','z']} 
    res = []
    def dfs(digits,temp):
        if len(digits)==0:
            if temp !='':
                res.append(temp)
            return 
        digit = digits[0]
        for ch in dic[digit]:
            dfs(digits[1:],temp+ch)
    dfs(digits,'')
    return res
复制代码
复制代码
#笛卡尔积
#python人狂喜嗨还害
#本质上为
class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        conversion={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        if len(digits)==0:
            return [] 
        product=['']
        for k in digits:
            product=[i+j for i in product for j in conversion[k]] # for i for j 然后返回列表i与j的所有组合
        return product
复制代码
# 探究i+j for i in a for j in b
a = ['a','b','c']
b = ['d','e']
res = [i+j for i in a for j in b]
res    

 

posted @   是冰美式诶  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示