【发布时间】:2021-09-03 04:01:19
【问题描述】:
问题集: Letter combinations of a phone
我想到的解决方案:
def letterCombinations(self, digits: str) -> List[str]:
if not digits: return []
digit_map = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno',
'7': 'pqrs', '8': 'tuv', '9': 'wxyz'}
result = [""]
arr = []
for i in digits:
for j in digit_map:
if i==j:
s = map(str,digit_map[i])
for x in s:
arr.append(x)
在此之后,我打算在 arr 上使用 map() 函数,然后将一个字母表匹配到另一个字母表。然而,这个过程还不够好。 此后我转向解决方案。 我最喜欢的解决方案是 this one 但是,在提供的解决方案中:
def letterCombinations(self, digits: str) -> List[str]:
if not digits: return []
dt = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}
rst = ['']
for i in digits: rst = [j+k for j in rst for k in dt[i]]
return rst
我不明白第 5 行的 for 循环。有人可以解构它并将其写成多行,这样输出就不会改变。
我尝试自己做,但输出改变并给出了错误的结果。
for i in digits:
tmp = []
for j in rst:
for k in dt[i]:
temp = [j+k]
rst += temp
【问题讨论】:
-
你想做什么?示例输入和预期输出是什么?
标签: python dictionary code-structure