leetcode —— 17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
解题思路:
使用深度优先遍历,基于目前产生的组合,产生下一步会产生的所有组合。然后使用回溯,返回上一个状态。
其Python代码如下:
class Solution:def letterCombinations(self, digits: str) -> List[str]:phone = {'2': ['a', 'b', 'c'],'3': ['d', 'e', 'f'],'4': ['g', 'h', 'i'],'5': ['j', 'k', 'l'],'6': ['m', 'n', 'o'],'7': ['p', 'q', 'r', 's'],'8': ['t', 'u', 'v'],'9': ['w', 'x', 'y', 'z']}def dfs(str1,str2):if len(str2)==0: # 递归停止条件output.append(str1)else:for s in phone[str2[0]]: # 对于每一阶段的每种选择,进行深度遍历dfs(str1+s,str2[1:]) output = [] if digits:dfs("",digits)return output
leetcode —— 17. 电话号码的字母组合相关推荐
- [DFS|回溯法] leetcode 17 电话号码的字母组合
[DFS|回溯法] leetcode 17 电话号码的字母组合 1.题目 题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 ...
- LeetCode 17电话号码的字母组合(搜索)18四数之和
电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23 ...
- leetcode 17. 电话号码的字母组合 思考分析
题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 思考与递归程序 解空间树的宽度是输入数字对应的字符的个 ...
- [LeetCode] 17. 电话号码的字母组合
1 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输 ...
- LeetCode 17. 电话号码的字母组合(回溯)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: ...
- leetcode 17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...
- C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
一.解题思路 用map可以加快查询速度,DFS深度搜索,DFS是一种很常见的对于多循环或者n!的好的搜索算法. 二.代码:C++ void init(map<char, string> & ...
- LeetCode 17 电话号码的字母组合
https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 解决方案 class Solution {public ...
- leetcode 17.电话号码的字母组合
题目 解法 BFS + hash /* 广度遍历,利用队列实现 */ class Solution {private:unordered_map<char,string> tel_map; ...
最新文章
- Atlas Cool Application
- [Exchange]使用EWS托管API2.0同步邮箱
- vue-ueditor 后端配置项没有正常加载_揭秘Gannt后端集成问题该如何解决
- 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
- 文件服务器 双机,文件服务器双机备份
- WindowsPowerShell常用命令
- golang: 类型转换和类型断言
- 关于viewport我自己的理解
- [导入]ADO.NET Entity Framework 深入分析, Part 6 – 处理并发(Concurrency Handling)
- mysql 存储过程 插入记录_mysql 存储过程 插入记录
- Python3——类
- 20165212 预备作业3 Linux安装及学习
- js中自执行函数(function(){})()和(function(){}())区别
- 449A - Jzzhu and Chocolate 贪心
- 8086、80286、80386
- 用matlab抽样定理验证,实验一 MATLAB验证抽样定理
- 对抗攻击与防御 (2):对抗样本的反制策略
- linux修改域名命令是,Linux系统脚本命令修改动态域名解析记录
- 关于第一次深度学习项目的总结
- 浏览器内部工作原理[译]How browsers work (转)