URL缩短器的最大输入数字

时间:2018-07-16 10:49:03

标签: math url-shortener

给出以下编码数字的代码-如果我想限制生成的密钥的长度,如何计算最大数字。例如将encode(num)的结果的最大长度设置为某个固定值,例如10

var alphabet = <SOME SET OF KEYS>,
    base = alphabet.length;

this.encode = function(num) {
    var str = '';
    while (num > 0) {
        str = _alphabet.charAt(num % base) + str;
        num = Math.floor(num / base);
    }
    return str;
};

1 个答案:

答案 0 :(得分:0)

您正在以num为基础构造base的表示形式,并使用一些任意字符作为数字(alphabet)。

对于n个字符,我们可以表示数字0到base ^ n-1,因此您的问题的答案是base ^ 10-1。例如,使用十进制的5位数字我们可以表示0到99999(10 ^ 5-1-1)之间的数字。

值得注意的是,您将永远不会使用某些n长度以下的字符串,例如'001'或'0405'(使用十进制系统数字)-因此,除了'0'以外,任何以0开头的字符串都不会。

我想,出于允许长度可变的URL缩短器的目的,这可能被认为是浪费。通过使用所有组合,您可以表示数字0到base ^(n + 1)-2,但这并不像您的方案那么简单。