Leetcode - 17. 电话号码的字母组合
给定一个仅包含数字
2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。
给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
提示:
- 0 <= digits.length <= 4
- digits[i] 是范围 ['2', '9'] 的一个数字。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解1 2021/8/29 O(n4)
def letterCombinations(digits: str) -> list:
# 这题限制了digits.length<=4,而且每个按键最多才4个数,暴力先看看超不超时
d={
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz',
}
len=digits.__len__()
if len==0: return []
if len==1: return [x for x in d[digits[0]]]
res=[]
if len==2:
for x in d[digits[0]]:
for y in d[digits[1]]:
res.append(x+y)
if len==3:
for x in d[digits[0]]:
for y in d[digits[1]]:
for z in d[digits[2]]:
res.append(x+y+z)
if len==4:
for x in d[digits[0]]:
for y in d[digits[1]]:
for z in d[digits[2]]:
for k in d[digits[3]]:
res.append(x+y+z+k)
return res
if __name__ == '__main__':
print(letterCombinations(""))
print(letterCombinations("2"))
print(letterCombinations("7"))
print(letterCombinations("23"))
print(letterCombinations("723"))
print(letterCombinations("2723"))



浙公网安备 33010602011771号