1. 题目

2.题目分析与思路

3.代码

1. 题目

输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

2. 思路

  这道题主要是考察了一个图的遍历,由两种方法,1.深度优先遍历2.广度优先遍历,一个用的是递归,或者栈,另一个用队列

3. 代码

先给出递归的深度优先遍历:(后来觉得这个是广度优先。。。。)

class Solution:
def letterCombinations(self, digits: str) -> List[str]:
def callback(list2,list1):
if len(list1) == 1: #跳出条件
for i in list2:
for k in list1[0]:
res.append(i+k)
else:
callback([k + i for k in list2 for i in list1[0]],list1[1:])
res = []
str1 = 'abc def ghi jkl mno pqrs tuv wxyz'.split(' ')
list3 = [list(str1[int(i)-2]) for i in digits]
if len(list3) == 0: #主要是排除空的情况,否则在第6行会出现out of index
return []
callback([''],list3)
return res

从代码中可以看出,递归主要分为两个部分,第一个部分是最终的条件部分,第二个部分是自身调用函数的过程,递归的目的就是将一个多重问题转变为两个两个操作的过程。就像callback中的 跳出条件一样,否则的话,就将list1中的第一个列表和list2 进行合并后再执行callback函数,看看list1 是不是长度为1的了。

这里有一个坑,就是如果输入的是空的话,就会出现outofindex所以要先判断一下是否为空。

LeetCode 第17题--电话号码的组合(DFS)的更多相关文章

  1. Leetcode(17)-电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...

  2. leetcode第17题--4Sum

    Problem:Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + ...

  3. LeetCode第十七题-电话号码的字母组合

    Letter Combinations of a Phone Number 问题简介: 给定包含2-9的数字的字符串,返回该数字可能表示的所有可能的字母组合. 下面给出了数字到字母的映射(就像在电话按 ...

  4. 【LeetCode每天一题】Combinations(组合)

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...

  5. [LeetCode] 系统刷题2_排列组合

    要用到backtracking,是否要跟backtracking放到一起总结? 适用范围: 几乎所有搜索问题 什么时候输出 哪些情况需要跳过 相关题目: [LeetCode] 78. Subsets ...

  6. LeetCode第[17]题(Java):Letter Combinations of a Phone Number

    题目:最长公共前缀 难度:EASY 题目内容: Given a string containing digits from 2-9 inclusive, return all possible let ...

  7. LeetCode第[46]题(Java):Permutations(求所有全排列) 含扩展——第[47]题Permutations 2

    题目:求所有全排列 难度:Medium 题目内容: Given a collection of distinct integers, return all possible permutations. ...

  8. 【LeetCode】17. Letter Combinations of a Phone Number 电话号码的字母组合

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:电话号码, 字母组合,回溯法,题解,leetcode, ...

  9. 【JavaScript】Leetcode每日一题-组合总和4

    [JavaScript]Leetcode每日一题-组合总和4 [题目描述] 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 targ ...

随机推荐

  1. Vue2.0 Vue.set的使用

    原文链接: https://blog.csdn.net/qq_30455841/article/details/78666571

  2. Linux 内核驱动结构嵌入

    如同大部分驱动核心结构的情形, device_driver 结构常常被发现嵌到一个更高级的, 总 线特定的结构. lddbus 子系统不会和这样的趋势相反, 因此它已定义了它自己的 ldd_drive ...

  3. LuoguP3045牛券Cow Coupons

    LuoguP3045 [USACO12FEB]牛券Cow Coupons 果然我贪心能力还是太差了 ZR讲过的原题我回来对做法没有一丁点印象 有时候有这样一种题目 每个数有两种不同的价值 你可以选择价 ...

  4. node-sass安装报错

    npm install --save-dev node-sass --registry=https://registry.npm.taobao.org --disturl=https://npm.ta ...

  5. supported platform

    Target name Platform Architecture Endianness Developer(s) Known Issues/Notes adm5120 Infineon/ADMtek ...

  6. 聊聊固态硬盘1--人生头两块SSD

    第一块固态硬盘--浦科特m6s   来源:京东双11   价格:319rmb           第二款固态--饥饿鲨ocz arc100   来源:美国亚马逊 黑色星期五 价格:366rmb     ...

  7. 深入JVM(二)JVM概述

    深入JVM(一)JVM指令手册 深入JVM(二)JVM概述 一.JVM的原理 Java虚拟机是Java平台的基石,解决了硬件和操作系统的相互独立性.不同平台(Windows,Linux和MacOS)的 ...

  8. 0018 CSS注释(简单)

    CSS注释规则: /* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 "/*" 标记开始注释,在内容的结尾使用 "*/"结束. 例如: p { / ...

  9. 0002 认识HTML(骨架、DOCTYPE、lang、charset)

    学习目标 理解 1.HTML的概念 2.HTML标签的分类 3.HTML标签的关系 4.HTML标签的语义化 应用 1.HTML骨架格式 2.sublime基本使用 1. HTML 初识 HTML 指 ...

  10. 为什么在做微服务设计的时候需要DDD?

    记得之前在规划和设计微服务架构的时候,张队长给了我一个至今依然记忆深刻的提示:『你的设计蓝图里为什么没有看到DDD的影子呢?』 随着对充血模型的领域认知的加深,我越加感觉到DDD的重要性.但是DDD内 ...