【力扣】电话号码的字母组合
来源:力扣(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
浙公网安备 33010602011771号