leetcode 電話號碼的數字組合 python
阿新 • • 發佈:2019-01-14
給定一個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與電話按鍵相同)。注意 1 不對應任何字母。
使用遞迴即可,注意處理輸入為空的情況以及chr()和ord()的用法
class Solution:
def getA(self, x):
x = int(x)
if x == 1:
return
elif x >= 2 and x <= 6:
return [chr(ord('a') + (x - 2) * 3 ), chr(ord('a') + (x - 2) * 3 + 1), chr(ord('a') + (x - 2) * 3 + 2)]
elif x == 7:
return ['p', 'q', 'r', 's']
elif x == 8:
return ['t', 'u', 'v']
elif x == 9:
return ['w', 'x', 'y', 'z']
def recursionComb(self, digitsList):
if len (digitsList) == 1:
return self.getA(digitsList[0])
ans = []
addAns = self.getA(digitsList.pop()) #最後一個元素
preAns = self.recursionComb(digitsList) #之前的所有元素
for i in preAns:
for j in addAns:
ans.append(i + j)
return ans
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]t
"""
if digits == '':
return []
digitsList = list(digits)
return self.recursionComb(digitsList)