初级编程通关练习题 #15 – 电话号码字母组合

给定一个正整数 N(N 的长度大于 1 小于 5),按照下面图案中电话按键每个数字所对应的字母字符串,找出该整数可以表示的全部字母组合。注意:数字 1 没有对应的字母。

telephone letters

(该图片来自维基百科 – 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 函数来处理上面的列表并产生所有的组合。