【发布时间】:2020-09-30 06:26:28
【问题描述】:
我想实现 RadixSort 并获取特定小数位的数字。
int num (int elem, int place)
--- if element == 12225 and place == 0
--- expected output would be 5 (starting to count by right)
--- if place == 4 expected output would be 1
我写了这个方法。但它既不工作也不高效。
static int key(int element, int decimalPlace) {
if (element < 0)
throw new IllegalArgumentException("invalid argument");
int tmp = (int) (Math.log10(element) + 1);
if (decimalPlace > tmp)
return 0;
else {
return Integer.parseInt(String.valueOf(Integer.toString(element).charAt(tmp - decimalPlace)));
}
}
我想我应该能够更有效地解决这个问题
【问题讨论】:
-
也许只是 1) 将十进制数字打印成字符串,然后 2)
String.charAt()你想要的数字? -
或者,将十进制数乘以 10 到所需数字所在位置的幂(因此它成为小数点前的最后一位),将其转换为
int并计算除以 10 的模块 (% 10) -
抱歉,“十进制”是指以 10 为底:然后(如果是
int),除以 10 到您想要的位置的幂,然后得到除以 10 的模块。比如12345中的第三个位置:(12345 / 100) % 10 -
说
its neither working: ypur 代码对于 12225 中的 1 或 4 位的实际结果是什么?或者你得到了什么错误?