这是我正在尝试为其创建最佳解决方案的问题。我在[0...N]范围内有一组有限的非负整数。我需要能够将这个集合中的每个数字表示为一个字符串,并且能够将这样的字符串向后转换为原始数字。所以这应该是一个双射函数。
附加要求是:
- 数字的字符串表示应该至少在某种程度上混淆原始数字。所以像f(x) = x.toString()这样的原始解决方案将不起作用。
- 字符串长度很重要:越少越好。
- 如果有人知道K的字符串表示,我希望它是非平凡的(在某种程度上)猜测K+1的字符串表示。
对于 p.1 和 p.2,显而易见的解决方案是使用类似 Base64(或任何适合所有值的 BaseXXX)符号。但是我们能以最少的额外努力适应第 3 页吗?常识告诉我,对于 BaseXXX 值,我还需要一个双射“String <-> String”函数。有什么建议么?或者也许有比 BaseXXX 更好的东西来满足所有 3 个要求?