gpt4 book ai didi

python - 将给定字母表的字符串转换为整数

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

我有一个工作函数,可以将给定字母表 A 上的整数转换为长度为 k 的字符串

def ToString(x, k, A):
"""
Args:
x (int): Integer x ∈ N
k (int) String length k >= log_N (x)
A (list) Alphabet A = {c_1, ..., c_N}
"""

S = ""
N = len(A)

for i in reversed(range(0, k)):
s_k = A[x % N]
x = x // N
S += s_k

return S

测试:

  A = ['0', '1']  # Alphabet
k = 8 # length
x = 5 # the number to convert
s = ToString(x, k, A) # s = '10100000'

所以现在我基本上需要这个函数的精确逆函数,所以我可以将字符串 '10100000' 和给定的字母表转换回 5

def ToInteger(S, A):
"""
Args:
S (str): String
A (list): Alphabet

Returns:
int: Integer
"""
x = 0
for i in range(len(S)):
x = len(A) * x + len(A)-1-A.index(S[i])
return x

不幸的是,这会返回垃圾:

i = StringToInteger('10100000',['0','1']) # = 95

这是算法规范的样子: enter image description here

错在哪里?

最佳答案

尝试在你的第一个函数中使用 S = s_k + S 而不是 S += s_k然后使用这个函数:

def toInteger(S, A):
x = 0
for i in range(len(S)):
x += (len(A) ** (len(S) - 1 - i)) * (A.index(S[i]))
return x

关于python - 将给定字母表的字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43027700/

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