==============================================================================
【id】#17
【title】 Letter Combinations of a Phone Number
【description】
Given a string containing digits from 2-9 inclusive, 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. Note that 1 does not map to any letters.
Example:
Input: “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
【idea】
建立字典对照表,将字符串转换为每个数字代表字母组合的list。
初始化一个ans =[’’]存放最后的结果。
遍历list得到字母组合t。遍历ans得到已有的字母组合元素,此时遍历t得到所有的字母letters,并将ans中的所有元素都拼接上前边的letters,得到新一轮的字母组合。
【code】
class Solution(object):
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
if digits == '' or digits == ' ': return ['']
dic = {'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
tmp = list(map(lambda x: dic[x],digits))
ans = [""]
for t in tmp:
res = []
for a in ans:
for c in t:
res.append(a+c)
ans = res
return res
s = Solution().letterCombinations('')
s