算法-电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
这道题利用了回溯的思想,由于是不存在不可行的情况,直接穷举所有情况不需要剪枝操作。
package mainimport "fmt"var phoneMap map[string]string = map[string]string{"2": "abc","3": "def","4": "ghi","5": "jkl","6": "mno","7": "pqrs","8": "tuv","9": "wxyz",
}var combinations []stringfunc letterCombinations(digits string) []string {if len(digits) == 0 {return []string{}}combinations = []string{}backtrack(digits, 0, "")return combinations
}func backtrack(digits string, index int, combination string) {//tow is successif index == len(digits) {combinations = append(combinations, combination)} else {digit := string(digits[index])letters := phoneMap[digit]lettersCount := len(letters)for i := 0; i < lettersCount; i++ {backtrack(digits, index + 1, combination + string(letters[i]))}}
}func main(){str := letterCombinations("23")for _,k :=range str{fmt.Println(k)}
}
很简单,不多说
时间复杂度:O(3^m+4^n) ,m为有三个字母的数字个数,n表示有四个字母的格式
空间复杂度:O(m+n)
参考地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/dian-hua-hao-ma-de-zi-mu-zu-he-by-leetcode-solutio/
算法-电话号码的字母组合相关推荐
- 经典算法电话号码的字母组合
1.题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输 ...
- 算法--电话号码的字母组合
描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例 输入:"23" 输出:[&q ...
- 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)
目录 LeetCode216. 组合总和III 1. 思路 2. 代码实现 3. 剪枝 4. 复杂度分析 5. 思考与收获 LeetCode17. 电话号码的字母组合 1. 思路 2. 代码实现 3. ...
- LeetCode算法题17:电话号码的字母组合(Java版)
LeetCode传送门:电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: ...
- 算法题解(Leetcode 11、15、17、19、20:盛最多水的容器、三数之和、电话号码的字母组合、删除链表的倒数第 N 个结点、有效的括号)
文章目录 [11. 盛最多水的容器 - 中等 - 9/7](https://leetcode-cn.com/problems/container-with-most-water/) [15. 三数之和 ...
- Leetcode算法Java全解答--17. 电话号码的字母组合
Leetcode算法Java全解答–17. 电话号码的字母组合 文章目录 Leetcode算法Java全解答--17. 电话号码的字母组合 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用 ...
- 代码随想录算法训练营day25| 216.组合总和III、17.电话号码的字母组合
Leetcode 216.组合总和III 题目链接 思路:回溯算法 代码: class Solution {List<Integer> path = new ArrayList<&g ...
- 代码随想录算法训练营第25天 | 216. 组合总和 III,17. 电话号码的字母组合
代码随想录算法训练营第25天 | 216. 组合总和 III,17. 电话号码的字母组合 216. 组合总和 III 此题相比较于组合 多了一个求和的条件 就可以在终止条件中添加该条件判断 加一个变量 ...
- 代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合
77组合 看完题后的思路 void f(数组,startIndex) 递归终止 if(startIndex数组长度||path.sizek){ if(path.size==k){ 加入} } 递归 f ...
最新文章
- OpenAI发布最新「模拟机器人环境」,用「真实机器人」模型进行训练
- 谈谈怎么做【服务隔离】
- Linux-Ubuntu Server 16.04安装JDK以及配置JDK环境变量
- 蓝桥练习题题解——作物杂交——Java
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- c语言写贪吃蛇什么水平_关于C语言写贪吃蛇
- python程序员怎么建议_资深程序员对Python新手的八个建议,超级实用!
- 自动驾驶攻破的难点在哪,何时能到Level 5?
- 28.ldconfig
- 迪信通机器人_未来已来,迪信通携手达闼科技共研智能零售机器人
- 超微主板升级bios_超微主板bios升级大盘点
- Mysql导入Hive并查询全程记录
- c++11 std::decay源码剖析
- cygwin安装apt-cyg命令
- deepin切换root
- VS Code加载 Web 视图时出错
- Axure原型——能在手机上演示的高保真移动端元件库
- 基于NIOS II的电子钟设计
- 呼叫中心软电话不显示
- NORDFLASH与NANDFLASH的区别及选型