给定一个仅包含数字 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. 电话号码的字母组合相关推荐

  1. [DFS|回溯法] leetcode 17 电话号码的字母组合

    [DFS|回溯法] leetcode 17 电话号码的字母组合 1.题目 题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 ...

  2. LeetCode 17电话号码的字母组合(搜索)18四数之和

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

  3. leetcode 17. 电话号码的字母组合 思考分析

    题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 思考与递归程序 解空间树的宽度是输入数字对应的字符的个 ...

  4. [LeetCode] 17. 电话号码的字母组合

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

  5. LeetCode 17. 电话号码的字母组合(回溯)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: ...

  6. leetcode 17. 电话号码的字母组合

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

  7. C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

    一.解题思路 用map可以加快查询速度,DFS深度搜索,DFS是一种很常见的对于多循环或者n!的好的搜索算法. 二.代码:C++ void init(map<char, string> & ...

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

    https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 解决方案 class Solution {public ...

  9. leetcode 17.电话号码的字母组合

    题目 解法 BFS + hash /* 广度遍历,利用队列实现 */ class Solution {private:unordered_map<char,string> tel_map; ...

最新文章

  1. Atlas Cool Application
  2. [Exchange]使用EWS托管API2.0同步邮箱
  3. vue-ueditor 后端配置项没有正常加载_揭秘Gannt后端集成问题该如何解决
  4. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )
  5. 文件服务器 双机,文件服务器双机备份
  6. WindowsPowerShell常用命令
  7. golang: 类型转换和类型断言
  8. 关于viewport我自己的理解
  9. [导入]ADO.NET Entity Framework 深入分析, Part 6 – 处理并发(Concurrency Handling)
  10. mysql 存储过程 插入记录_mysql 存储过程 插入记录
  11. Python3——类
  12. 20165212 预备作业3 Linux安装及学习
  13. js中自执行函数(function(){})()和(function(){}())区别
  14. 449A - Jzzhu and Chocolate 贪心
  15. 8086、80286、80386
  16. 用matlab抽样定理验证,实验一 MATLAB验证抽样定理
  17. 对抗攻击与防御 (2):对抗样本的反制策略
  18. linux修改域名命令是,Linux系统脚本命令修改动态域名解析记录
  19. 关于第一次深度学习项目的总结
  20. 浏览器内部工作原理[译]How browsers work (转)

热门文章

  1. Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)
  2. Linq杂谈之 — Linq导入Excel
  3. HTTP 请求之URLs 与 URNs
  4. 物联网大数据平台应具备的功能和特点
  5. 【Linux】在Linux环境下使用VSCode调试C/C++程序
  6. 【Python爬虫】Beautiful Soup库入门
  7. 【Python】Pygame入门
  8. 【Python】自动轨迹绘制
  9. GoLang MySQL CRUD Example
  10. 分布式团队_我们说的意思是:我们是一个分布式优先团队