将整数转换为给定字母表中的字符串的算法

时间:2017-03-10 07:01:04

标签: python algorithm

我试图实现一种算法,该算法将画布长,非负整数转换为给定字母A和长度为k的字符串以及bigendian字节顺序的字符串:

enter image description here

其中

enter image description here

我的代码:

def ToString(x, k, A):       
    S = []
    N = len(A)  # N = |A|

    for i in reversed(range(0,k)):
        s_k = InverseRank(x % N,A,N,k,i)
        x = x // N
        S.insert(0,s_k)

    return S

def InverseRank(x,A,N,k,i):
    return A[(x//N**(k-i-1)) % N]

但是,它无法正常工作。

  A = ['A', 'B', 'C', 'D', 'E']   # Alphabet
  k = 3
  x = 123
  S = ToString(x,k,A)

结果:

  s => ['A', 'A', 'E']

无论我选择什么x,结果字符串仅在最后一个字符中有所不同。前两个总是' A'

1 个答案:

答案 0 :(得分:2)

你误解了“在哪里”的解释 表达
S_Expression
是函数的算法应该生成的,而不是在行val unique = df1.union(df2).except(df1.intersect(df2)).show +----+ | key| +----+ |1234| |1221| +----+ 中使用的等级函数。

一种解决方案是将s_k = InverseRank(x % N,A,N,k,i)更改为s_k = InverseRank(x % N,A,N,k,i)