手机电话按键这道题挺有意思的,题目要求就是将数字组合转换成在能够在手机按键上生成的字符组合。这在电视剧《越狱》中有一个桥段就是通过分析手机的字符组合来知道主角的行踪。而在九宫格输入法里面,这样的组合算法也很常用。这里写链接内容
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”].
我们的做法就是先建立一个字典,把手机按键上所对应的的字符先写进内存中,然后再组合的时候各自查找并且融合就好了。
融合的方式就是两两融合,结果list先设置为空,然后对每一个数字进行处理,每一个输入都对应一个list,将这个list与上次的list融合成新的list就好了
附上python代码
class Solution(object):
def gathering(self,list1, list2):
if len(list1) == 0:
return list2
else:
result_list = []
for i in range(0, len(list1)):
for j in range(0, len(list2)):
result_list.append(list1[i] + list2[j])
return result_list
def letterCombinations(self, digits):
"""
:type digits: str
:rtype: List[str]
"""
phone_dict = {'2':['a','b','c'], '3':['d','e','f'], '4':['g','h','i'],
'5':['j','k','l'],'6':['m','n','o'],'7':['p','q','r', 's'],
'8':['t','u','v'],'9':['w','x','y','z'],
}
result_list = []
for s in digits:
result_list = self.gathering(result_list, phone_dict[s])
return result_list