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

算法-计算器

程序员文章站 2024-02-27 13:11:03
...

问题

算法-计算器

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

基本映射

table = {}
table["1"] = "aaa@qq.com#"
table["2"] = "abc"
table["3"] = "def"
table["4"] = "ghi"
table["5"] = "jkl"
table["6"] = "mno"
table["7"] = "pqrs"
table["8"] = "tuv"
table["9"] = "wxyz"

构造

面对这种题,遍历就好了,不过刚思考了关于递归构造的问题,不试一下怎么行

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if digits == "":
            return []
        '''
        	mark: 构造条件
        	sub : 每次递归的构造成果
        '''
        def DFS(mark, sub):
            # 当构造元素用完,表明构造完成
            if len(mark) == 0:
                # 添加到答案集合
                result.append(sub)
                return
            # 每个条件开启递归构造分支
            for char in table.get(mark[0]):
                DFS(mark[1:], sub + char)
        result = []
        DFS(digits, "")
        return result

没问题,代码简单到不行,省去全部流程的管理,方便快捷,清晰明了。