给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
mapping = {'2':['a','b','c'], '3':['d','e','f'],
'4':['g','h','i'], '5':['j','k','l'],
'6':['m','n','o'], '7':['p','q','r','s'],
'8':['t','u','v'], '9':['w','x','y','z']}
curr=['']
retr=[]
for i in digits:
retr=[x+y for x in curr for y in mapping[i]]
curr=retr
return retr
全排列:
a='123'
def perm(s=''):
if len(s) <= 1:
return [s]
sl = []
for i in range(len(s)):
for j in perm(s[0:i] + s[i + 1:]):
sl.append(s[i] + j)
return sl
print(perm(a))
['123', '132', '213', '231', '312', '321']