题目:给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
题目连接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
示例:
解题思路: 队列(先进先出): 1、令第一个数字对应字符依次进队; 2、按队列先进先出,依次出队与下一个数字对应字符组合并进队; 3、当第一个数字最后一个字符出队并与下一个数字对应字符组合进队结束后,队列中便更新为一系列新元素(组合字符); 4、同样,让更新后的队列中的元素重复2、3步骤,直到下一个数字为空 代码实现大致流程: 1. 初始化队列queue = [''] 2. 遍历数字组合digits 1)遍历队列长 a)首字符出队 赋值给ch1 b)遍历该数字对应字符串 赋值ch2 i) ch1与ch2组合进队
class Solution(object):
def letterCombinations(self, digits):
"""
电话号码的字母组合:
代码实现大致流程:
1. 初始化队列queue = ['']
2. 遍历数字组合digits
1)遍历队列长
a)首字符出队 赋值给ch1
b)遍历该数字对应字符串 赋值ch2
i) ch1与ch2组合进队
:type digits: str
:rtype: List[str]
"""
dict_phone = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mno', '7':'pqrs', '8':'tuv', '9':'wxyz'}
queue = ['']
if len(digits) == 0:
return []
for num in digits :
for i in range(len(queue)) :
ch1 = queue.pop(0)
for ch2 in dict_phone[num] :
queue.append(ch1+ch2)
return queue