gpt4 book ai didi

javascript - 将数字转换为尽可能短的字符串,同时保持唯一性

转载 作者:可可西里 更新时间:2023-11-01 01:46:43 25 4
gpt4 key购买 nike

我有一个数字,比如“123456”,我需要将它映射到一个字符串,任何字符串。 map 函数的唯一约束是:

  • 每个数字必须映射到一个唯一的字符串(这意味着该字符串可以任意长)
  • 字符串只能包含0-9、a-z、A-Z

什么映射函数会产生最短的字符串?

首选 JavaScript 解决方案。

注意:显然最简单的解决方案是使用原始数字,因此请确保您的解决方案比这更好。

最佳答案

您可能想要使用 Base 36Base 62

对于不区分大小写的字母数字字符,Base 36 是最紧凑的,但如果您想利用区分大小写,Base 62 大约要紧凑 20%。

对于Base 36,可以很方便的使用JavaScript的Number.toString(radix)方法,如下:

var n = 123456;
n.toString(36); // returns: "2n9c"

对于 Base 62,您可能需要检查 this forum post 。基本上您应该能够执行以下操作:

Number.prototype.toBase = function (base) {
var symbols =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
var decimal = this;
var conversion = "";

if (base > symbols.length || base <= 1) {
return false;
}

while (decimal >= 1) {
conversion = symbols[(decimal - (base * Math.floor(decimal / base)))] +
conversion;
decimal = Math.floor(decimal / base);
}

return (base < 11) ? parseInt(conversion) : conversion;
}

var n = 123456;
n.toBase(62); // returns: "w7e"

关于javascript - 将数字转换为尽可能短的字符串,同时保持唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557501/

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