给定一个正整数 N(N 的长度大于 1 小于 5),按照下面图案中电话按键每个数字所对应的字母字符串,找出该整数可以表示的全部字母组合。注意:数字 1 没有对应的字母。
(该图片来自维基百科 – https://en.wikipedia.org/wiki/Telephone_exchange_names )
输入样例:
N= 3415
输出样例:
[‘dgj’, ‘dgk’, ‘dgl’, ‘dhj’, ‘dhk’, ‘dhl’, ‘dij’, ‘dik’, ‘dil’, ‘egj’, ‘egk’, ‘egl’, ‘ehj’, ‘ehk’, ‘ehl’, ‘eij’, ‘eik’, ‘eil’, ‘fgj’, ‘fgk’, ‘fgl’, ‘fhj’, ‘fhk’, ‘fhl’, ‘fij’, ‘fik’, ‘fil’]
算法思路:
- 按照上图中数字和字母的对应关系创建字典。
- 循环整数的每一个数字,找出对应的字母字符串,加入一个列表中。
- 最后使用模块 itertools 的 product 函数来处理上面的列表并产生所有的组合。