LeetCode 第17题--电话号码的组合(DFS)
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)的更多相关文章
- Leetcode(17)-电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...
- 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 + ...
- LeetCode第十七题-电话号码的字母组合
Letter Combinations of a Phone Number 问题简介: 给定包含2-9的数字的字符串,返回该数字可能表示的所有可能的字母组合. 下面给出了数字到字母的映射(就像在电话按 ...
- 【LeetCode每天一题】Combinations(组合)
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...
- [LeetCode] 系统刷题2_排列组合
要用到backtracking,是否要跟backtracking放到一起总结? 适用范围: 几乎所有搜索问题 什么时候输出 哪些情况需要跳过 相关题目: [LeetCode] 78. Subsets ...
- LeetCode第[17]题(Java):Letter Combinations of a Phone Number
题目:最长公共前缀 难度:EASY 题目内容: Given a string containing digits from 2-9 inclusive, return all possible let ...
- LeetCode第[46]题(Java):Permutations(求所有全排列) 含扩展——第[47]题Permutations 2
题目:求所有全排列 难度:Medium 题目内容: Given a collection of distinct integers, return all possible permutations. ...
- 【LeetCode】17. Letter Combinations of a Phone Number 电话号码的字母组合
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:电话号码, 字母组合,回溯法,题解,leetcode, ...
- 【JavaScript】Leetcode每日一题-组合总和4
[JavaScript]Leetcode每日一题-组合总和4 [题目描述] 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 targ ...
随机推荐
- Vue2.0 Vue.set的使用
原文链接: https://blog.csdn.net/qq_30455841/article/details/78666571
- Linux 内核驱动结构嵌入
如同大部分驱动核心结构的情形, device_driver 结构常常被发现嵌到一个更高级的, 总 线特定的结构. lddbus 子系统不会和这样的趋势相反, 因此它已定义了它自己的 ldd_drive ...
- LuoguP3045牛券Cow Coupons
LuoguP3045 [USACO12FEB]牛券Cow Coupons 果然我贪心能力还是太差了 ZR讲过的原题我回来对做法没有一丁点印象 有时候有这样一种题目 每个数有两种不同的价值 你可以选择价 ...
- node-sass安装报错
npm install --save-dev node-sass --registry=https://registry.npm.taobao.org --disturl=https://npm.ta ...
- supported platform
Target name Platform Architecture Endianness Developer(s) Known Issues/Notes adm5120 Infineon/ADMtek ...
- 聊聊固态硬盘1--人生头两块SSD
第一块固态硬盘--浦科特m6s 来源:京东双11 价格:319rmb 第二款固态--饥饿鲨ocz arc100 来源:美国亚马逊 黑色星期五 价格:366rmb ...
- 深入JVM(二)JVM概述
深入JVM(一)JVM指令手册 深入JVM(二)JVM概述 一.JVM的原理 Java虚拟机是Java平台的基石,解决了硬件和操作系统的相互独立性.不同平台(Windows,Linux和MacOS)的 ...
- 0018 CSS注释(简单)
CSS注释规则: /* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 "/*" 标记开始注释,在内容的结尾使用 "*/"结束. 例如: p { / ...
- 0002 认识HTML(骨架、DOCTYPE、lang、charset)
学习目标 理解 1.HTML的概念 2.HTML标签的分类 3.HTML标签的关系 4.HTML标签的语义化 应用 1.HTML骨架格式 2.sublime基本使用 1. HTML 初识 HTML 指 ...
- 为什么在做微服务设计的时候需要DDD?
记得之前在规划和设计微服务架构的时候,张队长给了我一个至今依然记忆深刻的提示:『你的设计蓝图里为什么没有看到DDD的影子呢?』 随着对充血模型的领域认知的加深,我越加感觉到DDD的重要性.但是DDD内 ...