問題描述
給定一個僅包含數(shù)字 2-9 的字符串尝抖,返回所有它能表示的字母組合。
給出數(shù)字到字母的映射如下(與電話按鍵相同)迅皇。注意 1 不對應任何字母昧辽。
image.png
例子
image.png
問題分析:
1 數(shù)字和字符串是對應的,所以要構造字典
2 排列組合問題登颓,使用遞歸搅荞,或者窮舉。
python代碼實現(xiàn)
1 窮舉
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
conversion={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
if len(digits)==0:
return []
product=['']
for k in digits:
product=[i+j for i in product for j in conversion[k]] #將字符串重新排列組合
return product
2 遞歸
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
output = []
dic={'2':"abc",'3':"def",'4':"ghi",'5':"jkl",'6':"mno",'7':"pqrs",'8':"tuv",'9':"wxyz"}
def digui(combination,digi):
if len(digi)==0:
return output.append(combination)
else:
for i in dic[digi[0]]:
digui(combination+i,digi[1:])
if digits:
digui('',digits)
return output
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/