Mar*_*ark 4 string algorithm numbers formula
这对我来说很难(我)我希望人们可以帮助我.我有一些文本,我需要将它转移到一个数字,但它必须是唯一的,就像文本是唯一的一样.
例如:'kitty'这个词可以产生12432,但只有kitty这个词产生了这个数字.文本可以是任何内容,应给出适当的数字.
一个问题结果整数必须是一个32位无符号整数,这意味着最大可能的数字是2147483647.我不介意是否有文本长度限制,但我希望它可以尽可能大.
我的尝试.你有字母AZ和0-9所以一个字符可以有1-36之间的数字.但是如果A = 1且B = 2并且文本是A(1)B(2)并且你添加它你将得到3的结果,问题是文本BA产生相同的结果,所以这个算法不会工作.
有什么想法指出我正确的方向或是不可能做到的?
你的想法通常是理智的,只需要开发一点.
让f(c)
是一个功能转换的字符c
在范围内的唯一号码[0..M-1]
.然后你可以像这样计算整个字符串的结果数.
f(s[0]) + f(s[1])*M + f(s[2])*M^2 + ... + f(s[n])*M^n
Run Code Online (Sandbox Code Playgroud)
您可以轻松地证明该数字对于特定字符串是唯一的(您可以从该数字中获取字符串).
显然,你不能在这里使用很长的字符串(对于你的情况最多6个字符),因为36^n
增长很快.