电话号码的所有解

找出所有可能情况有两种方式
深度优先算法
广度优先算法

1.深度优先算法
自顶向下得递归实现
定义子问题
在当前递归层结合子问题结果解决原问题

public class Solution {public IList<string> LetterCombinations(string digits){Dictionary<char, string> keyValuePairs = new Dictionary<char, string>();keyValuePairs.Add('1', "");keyValuePairs.Add('2', "abc");keyValuePairs.Add('3', "def");keyValuePairs.Add('4', "ghi");keyValuePairs.Add('5', "jkl");keyValuePairs.Add('6', "mno");keyValuePairs.Add('7', "pqrs");keyValuePairs.Add('8', "tuv");keyValuePairs.Add('9', "wxyz");keyValuePairs.Add('0', "");IList<string> res = new List<string>();BackTrack(digits, 0, keyValuePairs, res, "");return res;}//56326public void BackTrack(string digits,int index, Dictionary<char, string> keyValuePairs, IList<string> res,string resNow){if (index > digits.Length - 1) {if(!resNow.Equals(""))res.Add(resNow);return;}char digit = digits[index]; string letters = keyValuePairs[digit]; if(letters.Equals(""))BackTrack(digits, index + 1, keyValuePairs, res, resNow);for (int i = 0; i < letters.Length; i++){BackTrack(digits, index+1, keyValuePairs,res, resNow + letters[i]);}}
}

2abc 3def
2:广度优先算法
使用队列
从当前出发,逐步构造解
a b c
b c ad ae af
c ad ae af bd be bf
ad ae af bd be bf cd ce cf

public class Solution {public string[] LetterCombinations(string digits){Dictionary<char, string> keyValuePairs = new Dictionary<char, string>();keyValuePairs.Add('1', "");keyValuePairs.Add('2', "abc");keyValuePairs.Add('3', "def");keyValuePairs.Add('4', "ghi");keyValuePairs.Add('5', "jkl");keyValuePairs.Add('6', "mno");keyValuePairs.Add('7', "pqrs");keyValuePairs.Add('8', "tuv");keyValuePairs.Add('9', "wxyz");keyValuePairs.Add('0', "");Queue<string> res = new Queue<string>();for (int i = 0; i < digits.Length; i++){string nowString = keyValuePairs[digits[i]];if (i == 0){for (int k = 0; k < nowString.Length; k++)res.Enqueue(nowString[k].ToString());continue;}int countNow = res.Count();for (int j= 0; j < countNow; j++){string qian = res.Dequeue();for (int k = 0; k < nowString.Length; k++){res.Enqueue(qian + nowString[k]);}}} return res.ToArray();}
}

八键电话号码的字母组合相关推荐

  1. Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合

    组合板子+剪枝 216. 组合总和 III 剪枝操作? 17. 电话号码的字母组合 216. 组合总和 III class Solution {private:vector<int>tem ...

  2. 代码随想录第二十五天|组合、电话号码的字母组合

    代码随想录第二十五天|216.17不熟 Leetcode 216. 组合总和 III Leetcode 17. 电话号码的字母组合 Leetcode 216. 组合总和 III 题目链接: 组合总和 ...

  3. 《LeetCode力扣练习》第17题 电话号码的字母组合 Java

    <LeetCode力扣练习>第17题 电话号码的字母组合 Java 一.资源 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数 ...

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

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

  5. [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]

    [问题描述][中等] [解答思路] 用哈希表/数组存储每个数字对应的所有可能的字母,然后进行回溯操作. 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是 ...

  6. 【LeetCode】【HOT】17. 电话号码的字母组合(递归)

    [LeetCode][HOT]17. 电话号码的字母组合 文章目录 [LeetCode][HOT]17. 电话号码的字母组合 package hot;import java.util.ArrayLis ...

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

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

  8. 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)

    目录 LeetCode216. 组合总和III 1. 思路 2. 代码实现 3. 剪枝 4. 复杂度分析 5. 思考与收获 LeetCode17. 电话号码的字母组合 1. 思路 2. 代码实现 3. ...

  9. leetcode17 电话号码的字母组合,39 组合总和(python)

    文章目录 17. 电话号码的字母组合 分析 代码 通过截图 39. 组合总和 分析 代码 通过截图 代码 通过截图 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 ...

最新文章

  1. 两帧点云刚性配准的ICP算法
  2. linux中根目录下各个目录的作用
  3. angularjs中父,子,兄之间controller值得传递
  4. 微软热门开源项目及代码库地址
  5. BZOJ 4602: [Sdoi2016]齿轮 dfs
  6. 华为发布智能数据解决方案FusionData,重定义数据基础设施,释放数据价值
  7. Python 上传文件到阿里云OSS
  8. php mysql社工库_社工库源码 PHP ASP,持续更新
  9. 视频教程-OllyDbg(OD)使用教程-其他
  10. 核心银行系统 之一 历史与发展
  11. js如何实现扫描身份证识别_基于javascript实现根据身份证号码识别性别和年龄
  12. Linux - zookeeper集群搭建
  13. 成绩排序 九度OJ第2题
  14. 修复计算机系统还原,怎么给电脑系统做一键恢复
  15. Linux设备驱动开发详解 第3版 (即 Linux设备驱动开发详解 基于最新的Linux 4 0内核 )前言
  16. UE4 Sequence在蓝图中播放和结束
  17. python中git克隆代码失败_使用Git clone代码失败的解决方法
  18. jsp文字上下居中显示_怎么把jsp的文字居中
  19. 远程执行模块和黏包 socketserve hamc模块验证合法性
  20. Pytorch模型加密的方法

热门文章

  1. arcmap fishnet 经纬度
  2. ABclonal再添一员“蛋白~DNA互作研究”大将—CUTTag
  3. 计算机考研中的编号,考研科目前边的编号是什么意思
  4. 非此即彼的逻辑错误_Argument常见逻辑错误及描述 【出国英语】
  5. 电脑网络连接为什么常常连接不上
  6. 【经验】一劳永逸解决中文显示是大方块,不是乱码(最详细解释,有图有真相)
  7. 亚马逊巴西站对中国商家正式开放试运营,如何快速提升销量
  8. 怎样淡化疤痕留下的色素沉着
  9. Node.js 小白入门课3-设置基本数据库
  10. 【同步与补偿】频率偏移