我必须在任何两个牌照号码之间获得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();
}
}
有谁知道我如何才能获得这些格式之间的距离?非常感谢你。
答案 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'