給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。
示例:輸入:「23」
輸出:[「ad」, 「ae」, 「af」, 「bd」, 「be」, 「bf」, 「cd」, 「ce」, 「cf」].
說明:儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。
遞迴是真滴慢:
class
solution
:def
lettercombinations
(self, digits)
:"""
:type digits: str
:rtype: list[str]
"""ifnot digits:
return
nums, res =
['abc'
,'def'
,'ghi'
,'jkl'
,'mno'
,'pqrs'
,'tuv'
,'wxyz'],
iflen
(digits)==1
:return
list
(nums[
int(digits[0]
)-2]
) left = self.lettercombinations(digits[:-
1]) right =
list
(nums[
int(digits[-1
])-2
])for i in left:
for j in right:
return res
這樣會快很多:
class
solution
:def
lettercombinations
(self, digits)
:"""
:type digits: str
:rtype: list[str]
"""ifnot digits:
return
nums, res =
['abc'
,'def'
,'ghi'
,'jkl'
,'mno'
,'pqrs'
,'tuv'
,'wxyz'],
['']for digit in digits:
res =
[a+b for a in res for b in nums[
int(digit)-2
]]return res
回溯:
class
solution
:def
lettercombinations
(self, digits)
:"""
:type digits: str
:rtype: list[str]
"""ifnot digits:
return
nums, res =
['abc'
,'def'
,'ghi'
,'jkl'
,'mno'
,'pqrs'
,'tuv'
,'wxyz'],
defhelper
(s=''
, index=0)
:iflen(s)
==len
(digits)
:return
for char in nums[
int(digits[index])-
2]: helper(s+char, index+1)
helper(
)return res
Leetcode17 電話號碼組合
leetcode17 號碼組合 給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 思路 大家都能想到,我每次從裡面選擇乙個數,然後把所有的可能...
leetcode 17 電話號碼的字母組合
題目描述 給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 實現 string num 10 class solution private tem...
LeetCode17電話號碼的字母組合
給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf class solution def lettercombinations self,digit...