试题 B:字串数字
类型:结果填空,总分:5分
【问题描述】
小明用字母 A A A 对应数字 1 1 1 , B B B 对应 2 2 2 , 以此类推,用 Z Z Z 对应 26 26 26。对 27 27 27 以上的数字,小明用两位或更长位的字符串来对应,例如 A A AA AA 对应 27 27 27, A B AB AB 对应 28 28 28, A Z AZ AZ 对应 52 52 52, L Q LQ LQ 对应 329 329 329。
请问 L A N Q I A O LANQIAO LANQIAO 对应的数字是多少?
【思路】
其实就是二十六进制数转十进制,不明白的可以自行搜索二进制、八进制、十六进制转十进制的方法
【代码】
public class Main {
public static void main(String[] args) {
long ans = 0, digit = 1;
StringBuilder sb = new StringBuilder("LANQIAO");
sb.reverse(); //翻转字符串
for(int i = 0; i < sb.length(); i++) {
long ch = sb.charAt(i) - 'A' + 1;
ans += ch * digit;
digit *= 26;
}
System.out.println(ans);
}
}
【结果】
3725573269