2014-10-01 98 views
0

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

公共类主要{

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(); 
} 

} 

有谁知道哪有我得到这种格式之间的距离?非常感谢。

+0

是有一些问题在这里超越座36数学? – 2014-10-01 13:29:15

+0

是的,我还必须为每个字母字母数字的组合数量的总和,但我只有在以后才意识到。 – 2014-10-05 16:34:22

回答

1

这将是0-9 = 10个字符+ AZ = 26个字符的如此而不是底座10其基部36

你可以把每个字符在阵列并映射到它通过36

值1

然后让你乘开始在最右边的字符板的价值

Char value * 1 + 
Char value * 36 + 
Char Value * (36*36) + 
Char value * (36 * 36 *36) + ... 
+0

谢谢你的帮助! – 2014-10-05 16:34:55

0

您可以用基础数学36解决这个问题,

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

从整到它的基础-36表示你可以这样做转换:

>>> def num2str36(N): 
...  W = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
...  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' 
+0

非常感谢您的帮助和时间。 – 2014-10-05 16:35:22