电话号码的字母组合
1
暴力
如果这里len(digits)范围过大便行不通
def letterCombinations(digits: str) -> list[str]:
strings = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
if not digits:
return []
if len(digits) == 1:
return list(strings[int(digits) - 2])
lis = [int(i) - 2 for i in digits]
length = len(lis)
res = []
if length == 2:
for i in strings[lis[0]]:
for j in strings[lis[1]]:
res.append(i + j)
return res
if length == 3:
for i in strings[lis[0]]:
for j in strings[lis[1]]:
for k in strings[lis[2]]:
res.append(i + j + k)
return res
if length == 4:
for i in strings[lis[0]]:
for j in strings[lis[1]]:
for k in strings[lis[2]]:
for r in strings[lis[3]]:
res.append(i + j + k + r)
return res
2
队列
def letterCombinations(digits: str) -> list[str]:
strings = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
if not digits:
return []
queue = ['']
for i in digits:
for _ in range(len(queue)):
tmp = queue.pop(0)
for string in strings[int(i) - 2]:
queue.append(tmp + string)
return queue
队列法好一些,不存在暴力法那个问题