Python 刷Leetcode题库,顺带学英语单词(4)

简介: Python 刷Leetcode题库,顺带学英语单词(4)

Letter Combinations of a Phone Number


Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.


A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.  [#17]

20210721132438320.png


   Example:

   Input: "23"

   Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].


Note:

Although the above answer is in lexicographical order, your answer could be in any order you want.

题意:只包含2~9数字的字符串,根据电话机按键的对应关系,给出所有可能的字母组合。

先建一个电话机的键值映射,只有2~9对应a~z,1无任何对应,0一般表示空格:


>>> keyMap = ''.join([chr(i) for i in range(97,122) if i!=115])
>>> keyMap = [keyMap[i:i+3] for i in range(0,len(keyMap),3)]
>>> keyMap[-1]+='z'
>>> keyMap[-3]+='s'
>>> keyMap = [' ',''] + keyMap
>>> keyMap[2]
'abc'
>>> [keyMap[int(i)] for i in '323679']
['def', 'abc', 'def', 'mno', 'pqrs', 'wxyz']
>>> 


再引入一个第三方库 allpairpy 方便解题,其中的AllPairs()函数可以轻松列出所有字母组合(letter-pairs)。没有安装的在dos窗口中,运行 pip install allpairpy 。


   D:\>pip install allpairspy

   Collecting allpairspy

     Downloading allpairspy-2.5.0-py2.py3-none-any.whl (8.7 kB)

   Requirement already satisfied: six<2.0.0,>=1.10.0 in d:\python\lib\site-packages (from allpairspy) (1.15.0)

   Installing collected packages: allpairspy

   Successfully installed allpairspy-2.5.0


最后,代码如下:

>>> from allpairspy import AllPairs
>>> def LetterCombinate(numString):
  keyMap = ''.join([chr(i) for i in range(97,122) if i!=115])
  keyMap = [keyMap[i:i+3] for i in range(0,len(keyMap),3)]
  keyMap[-1]+='z'
  keyMap[-3]+='s'
  keyMap = [' ',''] + keyMap
  num = numString.replace('1','')
  lst = [keyMap[int(i)] for i in num]
  tmp = ['']
  for i in range(len(lst)):
    res = []
    for pair in AllPairs([tmp,lst[i]]):
      res.append(''.join(pair))
      tmp = res
  return sorted(res)
>>> LetterCombinate('23')
['ad', 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'ce', 'cf']
>>> LetterCombinate('52013')
['ja d', 'ja e', 'ja f', 'jb d', 'jb e', 'jb f', 'jc d', 'jc e', 'jc f',
 'ka d', 'ka e', 'ka f', 'kb d', 'kb e', 'kb f', 'kc d', 'kc e', 'kc f',
 'la d', 'la e', 'la f', 'lb d', 'lb e', 'lb f', 'lc d', 'lc e', 'lc f']
>>> 



Combinations


Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.   [#77]


Example:

Input: n = 4, k = 2

Output:

[

[2,4],

[3,4],

[2,3],

[1,2],

[1,3],

[1,4],

]


相关单词


目录
相关文章
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
65 6
|
5月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
130 2
|
3月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
56 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
3月前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
23 0
|
3月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
27 0
|
3月前
|
小程序 IDE 开发工具
Python编写单词复习小程序
Python编写单词复习小程序
24 0
|
5月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
5月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
78 7
|
5月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
60 3
|
5月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
28 3