Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.Input:Digit string “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
思路:这个题目有个特点就是每一个结果的长度都等于输入的digits的长度,每继续按一个键都是前面所有的结果与当前这个键对应的所有字母的组合。比方说一开始按了”2”,对应的结果是[“a”,”b”,”c”],再按一个”3”,就是前面的产生的”a”与”d”、”e”、”f”的组合[“ad”,”ae”,”af”],前面的产生的”b”与”d”、”e”、”f”的组合[“bd”,”be”,”bf”],前面的产生的”c”与”d”、”e”、”f”的组合[“cd”,”ce”,”cf”]。
代码如下:
class Solution(object):
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
if len(digits) == 0: return []
mapping = ('0', '1', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz')
result = ['', ]
for digit in digits:
temp, result = result, []
for item in temp:
for letter in mapping[int(digit)]:
result.append(item + letter)
return result
时间性能如下图所示: