English 中文(简体)
努力编号和背算法
原标题:String to Number and back algorithm

这是一个艰巨的任务(对我来说),我希望人们能够帮助我。 我有某些案文,我需要将其转交若干份,但正如案文是独特的一样,这必须是独特的。

For example: The word kitty could produce 12432, but only the word kitty produces that number. The text could be anything and a proper number should be given.

造成结果的分类问题之一,我必须是32个没有签名的分类账,这意味着最大的数字是2147483647。 如果存在案文长度限制,我不会想到,但我希望这种限制可能尽可能大。


我的尝试。 你的字母A-Z和0-9,这样一,就可以在1-36之间有编号。 但是,如果A = 1 和B = 2 文本是A(1)B(2),并且你补充说,问题在于BA案文得出相同结果,因此这一algoritm赢得了t工作。

任何使我处于正确方向的想法,还是不可能做到?

问题回答

你的想法一般是冷静的,只需要发展一点。

<代码>f(c)为功能转换特性c[0.M-1]上的独特编号。 然后,你可以计算出像这样整体的计算结果。

f(s[0]) + f(s[1])*M + f(s[2])*M^2 + ... + f(s[n])*M^n

你可以很容易地证明,具体扼杀的数字是独一无二的(而且你可以从数字中恢复)。

显然,你可以在此使用非常长的插手(就你而言,最多为6个特征),因为<代码>36^n迅速发展。

你们试图从“0-9”的特性中储存“强”的帽子(相当于获得一定数字)。 你会做些什么?

Char 9 8 7 6 5 4 3 2 1 0
Str  0 5 2 1 2 5 4 1 2 6

Num = 6 * 10^0 + 2 * 10^1 + 1 * 10^2...

你们的品格相同。

Char 5 4 3 2 1 0 
Str  A B C D E F
L = 36

C(I): transforms character to number: C(0)=0, C(A)=10, C(B)=11, ...

Num = C(F) * L ^ 0 + C(E) * L ^ 1 + ...

从描述为独特数目和用途的字句中打出字句子,这是你所能做的。

我怀疑使用字数超过2^32,但这不是你再次面临的问题,问题在于你需要把数字重新描绘成言辞。

如果你只是绘制数字上的字句,那么一些散射算法可能发挥作用,尽管你们必须努力保证你有一只能够打赢的拖车。

然而,就数字而言,这又是一个截然不同的问题,最容易的解决办法是,仅建一个字典,绘制两种方式的地图。

换言之:

AARDUANI = 0
AARDVARK = 1
...

如果你想要绘制26个特性的编号图,你只能储存6个特性(或5个或7个错误计算),但不是12个,肯定不是20个。

除非你只算实际的话,否则他们根本不遵循任何可观的规则。 这样做的唯一途径是把所有词语列入一个很长的清单,并从一开始就开始分配数字。

如果用某种语言正确表述案文,你可以有多个字眼。 然而,你们需要考虑所有可能的复数、位置和人名等。 这通常是不可能的。 我们谈论的是哪一种案文? 通常会有一些现成的字句,在没有任何事先了解的情况下,可以用32个字标出。

你们能否在座谈一句话? 仅给出第一句话,请看第1号,第2号,如果某一字已经或需要新字,则进行检查。 然后在某个地方拯救新创建的独裁者。 如果你需要100%可靠的、可逆转的地图,从数字回头到原始字,因为新的不为人知的文本没有遵循任何已知的格局,这很可能是唯一可行的解决办法。

如同MD5一样,有32 ́s 碰撞,但有安全 has。

仅将每种特性作为36基数处理,并计算对应数值?

因此:

 A  = 0
 B  = 1
[...]
 Z  = 25
 0  = 26
[...]
 9  = 35
 AA  = 36
 AB  = 37
[...]
 CAB  = 46657




相关问题
How to add/merge several Big O s into one

If I have an algorithm which is comprised of (let s say) three sub-algorithms, all with different O() characteristics, e.g.: algorithm A: O(n) algorithm B: O(log(n)) algorithm C: O(n log(n)) How do ...

Grokking Timsort

There s a (relatively) new sort on the block called Timsort. It s been used as Python s list.sort, and is now going to be the new Array.sort in Java 7. There s some documentation and a tiny Wikipedia ...

Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Enumerating All Minimal Directed Cycles Of A Directed Graph

I have a directed graph and my problem is to enumerate all the minimal (cycles that cannot be constructed as the union of other cycles) directed cycles of this graph. This is different from what the ...

Quick padding of a string in Delphi

I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...

热门标签