首页 > 解决方案 > 从java中的给定范围生成加拿大邮政编码

问题描述

我一直在寻找一段时间,但没有找到任何解决方案。例如,如果给定范围类似于 [A0A0A0 -A0P1M9] - 它应该给出给定范围内所有可能的有效加拿大邮政编码。TIA。

示例:输入从:A0A0A0 输入到:A0A0A4 输出:A0A0A0,A0A0A1,A0A0A2,A0A0A3,A0A0A4

标签: javautility

解决方案


我会根据混合 base-10 和 base-26 系统将可能的字符串代码转换为连续数字,将字符的值乘以位置相关因子:

  • 字符 0 由10*26*10*26*10
  • 字符 1 由26*10*26*10
  • 字符 2 由10*26*10
  • 字符 3 由26*10
  • 字符 4 由10
  • 字符 5 由1

通常,我会将 A..Z 表示为 0..25,只是(为了首先避免缺少 W 和 Z 字符的间隙)我会调整该位置的映射。

然后,我将生成两个转换后的限制之间的所有数字,并使用相反的方案将它们转换回来。

请注意,在最坏的情况下 A0A0A0..Y9Z9Z9 您将获得 1600 万个字符串。


推荐阅读