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. 2018-8-10-dot-net-core-使用-IPC-进程通信

    title author date CreateTime categories dot net core 使用 IPC 进程通信 lindexi 2018-08-10 19:16:52 +0800 2 ...

  2. H3C IPv6地址解析

  3. vue-cli 初始化 -4058 error

    如上图 原因:安装初始化时没有管理员权限 解决:进入目录删除node_modules,进入命令提示符以管理员身份重新运行: npm install

  4. IdentityServer4 sign-in

    原文地址 Sign-in IdentityServer 代表 user 分配token之前,user必须登录IdentityServer Cookie authentication 使用 cookie ...

  5. 如何抢占云栖大会C位?史上最强强强攻略来了

    本文作者:阿里云头条 原文链接 本文为云栖社区原创内容,未经允许不得转载.

  6. 查看虚拟机里的Centos7的IP(设置centos网卡)

    这里之所以是查看下IP ,是我们后面要建一个Centos远程工具Xshell 连接Centos的时候,需要IP地址,所以我们这里先 学会查看虚拟机里的Centos7的IP地址 首先我们登录操作系统 用 ...

  7. Windows 服务安装与卸载 (通过 Sc.exe)

    1. 安装 新建文本文件,重命名为 ServiceInstall.bat,将 ServiceInstall.bat 的内容替换为: sc create "Verity Platform De ...

  8. C# struct和class

    文字说明 值类型,存储于堆栈,存在于计算机内存逻辑区域中 引用类型,存储在堆中,位于计算机的不同逻辑位置 struct是值类型 推荐较小的数据类型使用,因为结构的大小会影响应用程序的性能 修改实际上是 ...

  9. Android多媒体框架

    Android系统的多媒体架构图 OpenMax做编解码作用(codec),从上到下依次是AL(应用层,在多媒体中间件和应用程序之间提供一个标准化接口).IL(集成层,解码编码器).DL(开发层,供应 ...

  10. Integer类入门学习

    Integer类 它是一个类,是 int 基本数据类型的封装类. 基本API Integer 类和 int 的区别 Integer 是 int 包装类,int 是八大基本数据类型之一(byte,sho ...