给定一个仅包含数字 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. 经典算法电话号码的字母组合

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

  2. 算法--电话号码的字母组合

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

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

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

  4. LeetCode算法题17:电话号码的字母组合(Java版)

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

  5. 算法题解(Leetcode 11、15、17、19、20:盛最多水的容器、三数之和、电话号码的字母组合、删除链表的倒数第 N 个结点、有效的括号)

    文章目录 [11. 盛最多水的容器 - 中等 - 9/7](https://leetcode-cn.com/problems/container-with-most-water/) [15. 三数之和 ...

  6. Leetcode算法Java全解答--17. 电话号码的字母组合

    Leetcode算法Java全解答–17. 电话号码的字母组合 文章目录 Leetcode算法Java全解答--17. 电话号码的字母组合 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用 ...

  7. 代码随想录算法训练营day25| 216.组合总和III、17.电话号码的字母组合

    Leetcode 216.组合总和III 题目链接 思路:回溯算法 代码: class Solution {List<Integer> path = new ArrayList<&g ...

  8. 代码随想录算法训练营第25天 | 216. 组合总和 III,17. 电话号码的字母组合

    代码随想录算法训练营第25天 | 216. 组合总和 III,17. 电话号码的字母组合 216. 组合总和 III 此题相比较于组合 多了一个求和的条件 就可以在终止条件中添加该条件判断 加一个变量 ...

  9. 代码随想录算法训练营第24天25天|● 77. 组合● 216.组合总和III ● 17.电话号码的字母组合

    77组合 看完题后的思路 void f(数组,startIndex) 递归终止 if(startIndex数组长度||path.sizek){ if(path.size==k){ 加入} } 递归 f ...

最新文章

  1. OpenAI发布最新「模拟机器人环境」,用「真实机器人」模型进行训练
  2. 谈谈怎么做【服务隔离】
  3. Linux-Ubuntu Server 16.04安装JDK以及配置JDK环境变量
  4. 蓝桥练习题题解——作物杂交——Java
  5. 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
  6. c语言写贪吃蛇什么水平_关于C语言写贪吃蛇
  7. python程序员怎么建议_资深程序员对Python新手的八个建议,超级实用!
  8. 自动驾驶攻破的难点在哪,何时能到Level 5?
  9. 28.ldconfig
  10. 迪信通机器人_未来已来,迪信通携手达闼科技共研智能零售机器人
  11. 超微主板升级bios_超微主板bios升级大盘点
  12. Mysql导入Hive并查询全程记录
  13. c++11 std::decay源码剖析
  14. cygwin安装apt-cyg命令
  15. deepin切换root
  16. VS Code加载 Web 视图时出错
  17. Axure原型——能在手机上演示的高保真移动端元件库
  18. 基于NIOS II的电子钟设计
  19. 呼叫中心软电话不显示
  20. NORDFLASH与NANDFLASH的区别及选型

热门文章

  1. 【IntelliJ IDEA】创建 导入 Java 项目
  2. MySQL 5.7 create VIEW or FUNCTION or PROCEDURE
  3. C语言建立有向图的邻接表及其遍历操作
  4. sourceTree 的使用教程
  5. nginx静态资源反向代理
  6. php 不能同时提交form
  7. (转)fastcgi简介
  8. android - 拍照
  9. 文远知行A轮再获数千万美元融资 商汤科技和农银国际跟投
  10. [译] Service workers:PWA应用背后的英雄