leetcode17 電話號碼的字母組合

2021-09-09 05:35:19 字數 1980 閱讀 7465

給定乙個僅包含數字 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...