程序员

[leetcode/lintcode 题解]大厂面试真题详解: 电话号码的字母组

作者:admin 2021-06-09 我要评论

描述 给一个不包含0和1的数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。 下图的手机按键图,就表示了每个数字可以代表的字母。 td {white-spa...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

描述
给一个不包含0和1的数字字符串,每个数字代表一个字母,请返回其所有可能的字母组合。
下图的手机按键图,就表示了每个数字可以代表的字母。
td {white-space:pre-wrap;border:1px solid #dee0e3;}12ABC3DEF4GHI5JKL6MNO7PQRS8TUV9WXYZ
以上的答案是按照词典编撰顺序进行输出的,不过,在做本题时,你也可以任意选择你喜欢的输出顺序。

在线评测地址:领扣题库官网

样例 1:
输入: "23"
输出: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
'2' 可以是 'a', 'b' 或 'c'
'3' 可以是 'd', 'e' 或 'f'
样例 2:
输入: "5"
输出: ["j", "k", "l"]

解题思路
使用深度优先搜索算法。

源代码

KEYBOARD = {
 '2': 'abc',
 '3': 'def',
 '4': 'ghi',
 '5': 'jkl',
 '6': 'mno',
 '7': 'pqrs',
 '8': 'tuv',
 '9': 'wxyz',
}

class Solution:

 @param digits: A digital string
 @return: all posible letter combinations
 def letterCombinations(self, digits):
 if not digits:
 return []
 results = []
 self.dfs(digits, 0, [], results)
 return results
 def dfs(self, digits, index, chars, results):
 if index == len(digits):
 results.append(''.join(chars))
 return
 for letter in KEYBOARD[digits[index]]:
 chars.append(letter)
 self.dfs(digits, index + 1, chars, results)
 chars.pop()

更多题解参考:九章官网solution


本文转自网络,原文链接:https://developer.aliyun.com/article/784588

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 第 2 章 基本数据类型

    第 2 章 基本数据类型

  • LeetCode笔记:Weekly Contest 234 比

    LeetCode笔记:Weekly Contest 234 比

  • 2021-04-11

    2021-04-11

  • 字符串算法 |   AC自动机算法

    字符串算法 | AC自动机算法

腾讯云代理商
海外云服务器