gpt4 book ai didi

python - 将表示字符在字典中位置的数字转换为原始字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:42:30 24 4
gpt4 key购买 nike

给定一个映射的函数

a = 0, b = 1, ..., z = 25

25 可以是 cfz。我需要编写一个函数,给定一个数字返回该数字可以表示的所有可能的“ascii”字符串(上例中的 cfz)。

编辑:字符串可以是任意长度,而不仅仅是 2 个字符,因此如果我传递给函数 1213,它可以是 1-2 -1-3 (bcbd),或12-1-3,或12-13,或1 -2-13 等等。

我知道这可以通过递归来解决,但我不知道如何在遍历字符串时实际跟踪不同的值。关于算法可能是什么的任何提示?

PS:这不是家庭作业,这是他们在电话屏幕上抛给我的问题。不用说,它并不顺利:/

最佳答案

我假设我们可以将您的映射函数定义为 string.ascii_lowercase 中的列表查找:

>>> import string
>>> f = lambda i: string.ascii_lowercase[i]
>>> f(0)
'a'
>>> f(25)
'z'

这个函数做整数划分:

>>> def part_int(s, max_i=len(string.ascii_lowercase)):
... if s:
... for j in range(1, len(s)+1):
... i = int(s[:j])
... if i >= max_i: break
... for p in part_int(s[j:], max_i):
... yield [i] + p
... else:
... yield []
...
>>> list(part_int('1258'))
[[1, 2, 5, 8], [1, 25, 8], [12, 5, 8]]

您可以使用 map() 将您的函数映射到这些数字:

>>> def int2str(i):
... return map(lambda l: ''.join(map(f, l)), part_int(str(i)))
...
>>> list(int2str(25))
['cf', 'z']
>>> list(int2str(1258))
['bcfi', 'bzi', 'mfi']

关于python - 将表示字符在字典中位置的数字转换为原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com