车牌之间的距离

时间:2014-10-01 13:25:30

标签: java

我必须在任何两个牌照号码之间获得Java的距离,例如从AA-00-00到00-00-ZZ,无论它们的格式如何(它也可以像00-AA-00)。在字母和数字从0-9到A到Z之间的字母之前,数字会增加。 客户端代码应该是这个:

public class Main {

  public static void main(String [] s) {      

  Scanner sc = new Scanner (System.in);

  while(sc.hasNextLine()) { 

      Newplate mercedes = new Newplate(sc.next());

      Newplate bmw = new Newplate(sc.next());

   System.out.println(mercedes.dist(bmw)); 
   }

   sc.close(); 
}

}

有谁知道我如何才能获得这些格式之间的距离?非常感谢你。

2 个答案:

答案 0 :(得分:1)

它将是0-9 = 10个字符+ A-Z = 26个字符所以不是基数10而是基数36

您可以将每个字符放在一个数组中并映射到值1到36

然后从最右边的字符

开始获取盘子的值
Char value * 1 +
Char value * 36 +
Char Value * (36*36) +
Char value * (36 * 36 *36) + ...

答案 1 :(得分:0)

你可以用base-36数学解决这个问题,

"0": 0,
"1": 1,
...
"A": 10,
"B": 11,
...
"Z": 35,
"10": 36,
"11": 37,
...

要从整数转换为基数36表示,您可以执行以下操作:

>>> def num2str36(N):
...     W = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
...     S = ''
...     while N > 0:
...             d = N % 36
...             S = S + W[d]
...             N = N // 36
...     return ''.join(reversed(S))
... 
>>> num2str36(0)
''
>>> num2str36(1)
'1'
>>> num2str36(35)
'Z'
>>> num2str36(36)
'10'
>>> num2str36(1000000)
'LFLS'
>>> num2str36(1000010)
'LFM2'