题目
题解一:模拟求解,计算每一位值然后累加。
注意:16进制数开始用"0x"表示,需要剔除。
public int converterHexadecimal(String string) {
if (string.startsWith("0x") || string.startsWith("0X")) {
string = string.substring(2);
}
int index = 0;
int result = 0;
for (int i = string.length() - 1; i >= 0; i--) {
result += getInt((string.charAt(i))) * Math.pow(16, index++);
}
return result;
}
public int getInt(char a) {
if (a >= 'a' && a <= 'z') {
return a - 'a' + 10;
}
if (a >= 'A' && a <= 'Z') {
return a - 'A' + 10;
}
return a - '0';
}
时间复杂度:O(N)
题解二:调用 Integer.parseInt(String s, int radix)
public int converterHexadecimal(String string) {
if (string.startsWith("0x") || string.startsWith("0X")) {
string = string.substring(2);
}
return Integer.parseInt(string, 16);
}