2014-10-01 4 views
0

Мне нужно получить расстояние в Java между любыми двумя номерами номерных знаков, например, от AA-00-00 до 00-00-ZZ, независимо от их формата (это также может быть как 00-AA-00). Числа увеличиваются до буквы и цифры идут от 0-9 и буквы от А до Z. клиентский код должен быть такой:Расстояние между номерами телефонов

общественного класса 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(); 
} 

} 

Кто-нибудь знает, как может Я получаю расстояние между этими форматами? Огромное спасибо.

+0

Есть ли какой-то вопрос здесь за основание 36 по математике? –

+0

Да, я также должен был делать сумму количества комбинаций для каждого символа буквенно-цифровой, но я понял только после. –

ответ

1

Был бы 0-9 = 10 символов + AZ = 26 символов таким образом, вместо того, чтобы быть основанием 10 его основание 36

Вы можете поместить каждый символ в массиве и сопоставить это значение 1 по 36

Тогда, чтобы получить значение пластины вы многократно, начиная с самого правого символа

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

Благодарим за помощь! –

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

Большое вам спасибо за помощь и время. –