首页 > 其他分享 >【LeetCode】17. 电话号码的字母组合

【LeetCode】17. 电话号码的字母组合

时间:2023-12-26 12:33:25浏览次数:37  
标签:tmp digits return cur 17 backtrack res 字母组合 LeetCode

链接:
https://leetcode.cn/problems/letter-combinations-of-a-phone-number/

思路:
利用深度优先遍历
遍历两个空间

第一个空间是digits,命名为space1
第二个空间是digits的每一位自身的空间,命名为space2
关键是遍历完每一个space2之后,如何转到space1的下一个space2

代码

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        dic = {
            '2': 'abc',
            '3': 'def',
            '4': 'ghi',
            '5': 'jkl',
            '6': 'mno',
            '7': 'pqrs',
            '8': 'tuv',
            '9': 'wxyz'
        }
        n = len(digits)
        if n == 0:
            return []
        res = []
        tmp_cur = ''
        def backtrack(tmp_cur, i):
            if i == n:
                res.append(tmp_cur)
                return
            for s in dic[digits[i]]:
                # 这里通过参数 i + 1 ,来转到下一个空间
                backtrack(tmp_cur + s, i + 1)
        backtrack(tmp_cur, 0)
        return res
            

标签:tmp,digits,return,cur,17,backtrack,res,字母组合,LeetCode
From: https://www.cnblogs.com/basilicata/p/17927878.html

相关文章

  • 【LeetCode】39. 组合总和
    题目给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少一个数字的被选数......
  • 【LeetCode】79. 单词搜索
    链接:https://leetcode.cn/problems/word-search/思路:利用深度优先遍历深度优先遍历一般流程:判断当前是否符合要求若符合要求,则看更深一层是否符合要求最后逐层向上返回代码classSolution:defexist(self,board:List[List[str]],word:str)->bool:m,......
  • Leetcode LCP 02. 分式化简
    https://leetcode.cn/problems/deep-dark-fraction/description/有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗?连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度......
  • Leetcode LCP 14. 切分数组
    https://leetcode.cn/problems/qie-fen-shu-zu/description/给定一个整数数组nums,小李想将nums切割成若干个非空子数组,使得每个子数组最左边的数和最右边的数的最大公约数大于1。为了减少他的工作量,请求出最少可以切成多少个子数组。示例1:输入:nums=[2,3,3,2,3,3]......
  • CF1917 C Watering an Array
    Link首先我们研究全是0的情况,显然的,每次操作2最多可以得到1分。那么显然的,不如直接一次操作一一次操作二,这样是最优的。然后再研究初始数组,很难用很快的方式得到应该从什么时候开始第一次操作二。不过可以注意到,第一次操作2最多可以得到n分,那么我们再\(2n+1\)天以后进行第一次......
  • openGauss学习笔记-172 openGauss 数据库运维-备份与恢复-导入数据-分析表172.1 分析
    openGauss学习笔记-172openGauss数据库运维-备份与恢复-导入数据-分析表执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划,提高查询性能。因此数据导入完成后,建议执行ANALYZE语句生成最新的表统计信息。统计结果存储在系统表PG_STATISTIC中。172.1分析表ANALYZE......
  • openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM
    openGauss学习笔记-173openGauss数据库运维-备份与恢复-导入数据-对表执行VACUUM如果导入过程中,进行了大量的更新或删除行时,应运行VACUUMFULL命令,然后运行ANALYZE命令。大量的更新和删除操作,会产生大量的磁盘页面碎片,从而逐渐降低查询的效率。VACUUMFULL可以将磁盘页面碎片恢......
  • UCB-CS170 笔记
    图论DFS记录一下一个OI中没怎么学会的知识点上图是一个DFS遍历,pre数组记录了每个节点最初被访问的时间,post数组记录了每个节点最后被访问的时间(进出栈的时间)根据两个数组,可以将所有边分为四类树边(TreeEdge):DFS树中的边后向边(BackEdge):从一个节点到其祖先的边......
  • HNOI2017影魔题解
    HNOI2017影魔对于两种贡献,都只用考虑左边第一个比自己大的,和右边第一个比自己大的数,分别记为\(l_i、r_i\)对于询问一,每个数对\((l_i,r_i)\)构成全部情况对于询问二,可以拆分成\(x=l_i\)时,\(y\in[i+1,r_i-1]\),以及\(y=r_i\)时,\(x\in[l_i+1,i-1]\)我们考虑用扫描线......
  • 『LeetCode』9. 回文数 Palindrome Number
    题目描述给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,为121-。因此......