八键电话号码的字母组合
电话号码的所有解
找出所有可能情况有两种方式
深度优先算法
广度优先算法
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();}
}
八键电话号码的字母组合相关推荐
- Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合
组合板子+剪枝 216. 组合总和 III 剪枝操作? 17. 电话号码的字母组合 216. 组合总和 III class Solution {private:vector<int>tem ...
- 代码随想录第二十五天|组合、电话号码的字母组合
代码随想录第二十五天|216.17不熟 Leetcode 216. 组合总和 III Leetcode 17. 电话号码的字母组合 Leetcode 216. 组合总和 III 题目链接: 组合总和 ...
- 《LeetCode力扣练习》第17题 电话号码的字母组合 Java
<LeetCode力扣练习>第17题 电话号码的字母组合 Java 一.资源 题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数 ...
- LeetCode 17电话号码的字母组合(搜索)18四数之和
电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23 ...
- [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]
[问题描述][中等] [解答思路] 用哈希表/数组存储每个数字对应的所有可能的字母,然后进行回溯操作. 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是 ...
- 【LeetCode】【HOT】17. 电话号码的字母组合(递归)
[LeetCode][HOT]17. 电话号码的字母组合 文章目录 [LeetCode][HOT]17. 电话号码的字母组合 package hot;import java.util.ArrayLis ...
- [DFS|回溯法] leetcode 17 电话号码的字母组合
[DFS|回溯法] leetcode 17 电话号码的字母组合 1.题目 题目链接 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 ...
- 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)
目录 LeetCode216. 组合总和III 1. 思路 2. 代码实现 3. 剪枝 4. 复杂度分析 5. 思考与收获 LeetCode17. 电话号码的字母组合 1. 思路 2. 代码实现 3. ...
- leetcode17 电话号码的字母组合,39 组合总和(python)
文章目录 17. 电话号码的字母组合 分析 代码 通过截图 39. 组合总和 分析 代码 通过截图 代码 通过截图 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 ...
最新文章
- 两帧点云刚性配准的ICP算法
- linux中根目录下各个目录的作用
- angularjs中父,子,兄之间controller值得传递
- 微软热门开源项目及代码库地址
- BZOJ 4602: [Sdoi2016]齿轮 dfs
- 华为发布智能数据解决方案FusionData,重定义数据基础设施,释放数据价值
- Python 上传文件到阿里云OSS
- php mysql社工库_社工库源码 PHP ASP,持续更新
- 视频教程-OllyDbg(OD)使用教程-其他
- 核心银行系统 之一 历史与发展
- js如何实现扫描身份证识别_基于javascript实现根据身份证号码识别性别和年龄
- Linux - zookeeper集群搭建
- 成绩排序 九度OJ第2题
- 修复计算机系统还原,怎么给电脑系统做一键恢复
- Linux设备驱动开发详解 第3版 (即 Linux设备驱动开发详解 基于最新的Linux 4 0内核 )前言
- UE4 Sequence在蓝图中播放和结束
- python中git克隆代码失败_使用Git clone代码失败的解决方法
- jsp文字上下居中显示_怎么把jsp的文字居中
- 远程执行模块和黏包 socketserve hamc模块验证合法性
- Pytorch模型加密的方法