给定一个数字,将其转换为相应字母的所有可能组合。例如,如果给定数字 1234
,它应该输出 abcd
、lcd
和 awd
,因为这些组合与字母对应的数字可以是 1 2 3 4
、12 3 4
或 1 23 4
。
我正在考虑用 Python 实现这一点的方法,但老实说我被难住了。有什么提示吗?
到目前为止,我基本上只设置了一个简单的系统来将单个数字转换为字母。
最佳答案
制作str
。
过滤数量超过 26 的列表。
编写返回字母的函数。
def alphabet(n):
# return " abcde..."[n]
return chr(n + 96)
def partition(lst):
for i in range(1, len(lst)):
for r in partition(lst[i:]):
yield [lst[:i]] + r
yield [lst]
def int2words(x):
for lst in partition(str(x)):
ints = [int(i) for i in lst]
if all(i <= 26 for i in ints):
yield "".join(alphabet(i) for i in ints)
x = 12121
print(list(int2words(x)))
# ['ababa', 'abau', 'abla', 'auba', 'auu', 'laba', 'lau', 'lla']
关于python - 将长数字转换为对应的字母组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733262/