首页 > 解决方案 > 如何确保由字母字符组成的小字符串没有冲突

问题描述

例如:

假设我可以有一个长度为 4 的字符串,由 26 个字母字符组成。

所以总共可以有 26^4(大约 456976)个不同的排列。

如何将这些字符串映射到 0 到 456976 范围内的唯一整数。

比如:aaaa -> 0 aaab -> 1 ... ...

标签: algorithm

解决方案


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,

这表明我们涵盖了独特排列的整个范围 - 按字母顺序启动。


推荐阅读