algorithm - 如何确保由字母字符组成的小字符串没有冲突
问题描述
例如:
假设我可以有一个长度为 4 的字符串,由 26 个字母字符组成。
所以总共可以有 26^4(大约 456976)个不同的排列。
如何将这些字符串映射到 0 到 456976 范围内的唯一整数。
比如:aaaa -> 0 aaab -> 1 ... ...
解决方案
Base-26 可能是你的朋友。
如果您想要您描述的 1:1 映射,则相当简单:
- 将 a映射到 0,b映射到 1 ... z到 25
- 将您的字符串视为 base-26 数字系统:
aaaa == 0000
,十进制为 0,十进制
zzzz = 25 * 26 ^ 3 + 25 * 26 ^ 2 + 25 * 26 + 25
为 456 975,
这表明我们涵盖了独特排列的整个范围 - 按字母顺序启动。
推荐阅读
- java - 使用正则表达式匹配特定运算符
- python - 使用 Python2 与 Python3 从 PrettyTable 打印
- python - 正则表达式耗时太长;有没有人建议加快这个速度?
- python - 使用嵌套循环的 Pandas 分配导致内存错误
- javascript - 选项卡内的引导手风琴
- apache - 如何使用 httpd 将测试 perl 脚本作为 cgi 脚本运行?
- laravel - Laravel 对 JavaScript 变量的本地化
- c# - 如何以二进制格式获取字节的信息
- regex - HTML 5 模式允许数值最多 4 个字符加上破折号加上数字字符最多 11 个字符?
- java - JavaFXGL如何从maven获取java库