Harukaze

 

【力扣】电话号码的字母组合

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

这题思路很简单,仅仅涉及到排列组合,需要注意的是循环层数太多,会超出时间和内存限制导致运行不通过。

 1 class Solution:
 2     def letterCombinations(self, digits: str) -> List[str]:
 3         conversion={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
 4         if len(digits)==0:
 5             return [] 
 6         product=['']
 7         for k in digits:
 8             product=[i+j for i in product for j in conversion[k]]
 9         return product
10 
11 作者:jutraman
12 链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/pythondian-hua-hao-ma-de-zi-mu-zu-he-by-jutraman/
13 来源:力扣(LeetCode)

其中第8行代码,内外层循环的关系是这样的:

1 for k in digits:
2      #product = [i+j for i in product for j in conversion[k]]
3      tmp = []
4      for i in product:
5          for j in conversion[k]:
6              tmp.append(i+j)
7      product = copy.deepcopy(tmp)            
8 return product

 



posted on 2021-03-03 19:32  Harukaze  阅读(181)  评论(0)    收藏  举报

导航