3 回答
TA贡献1844条经验 获得超8个赞
您只有8 个有效答案,因此您可以对它们进行硬编码:
private static int[] s_Numbers = {
0, 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999};
private static int largestPossibleNumber(int n) {
return s_Numbers[n];
}
TA贡献1906条经验 获得超3个赞
您正在寻求最有效的方法。很难证明某种方法是最有效的——它至少需要实现和基准测试多种方法。
但是这里有一个非常快的方法来做到这一点——只需创建一个Map,或者使用一个switch,见下文。这是有效的,因为 an 的大小int是固定的。但是请注意,此方法不会扩展到例如BigIntegers。
public static int largestPossibleNumber(final int numDigits) {
switch (numDigits) {
case 1: return 9;
case 2: return 99;
case 3: return 999;
case 4: return 9999;
case 5: return 99999;
case 6: return 999999;
case 7: return 9999999;
case 8: return 99999999;
case 9: return 999999999;
case 10: return Integer.MAX_VALUE;
default: throw new IllegalArgumentException();
}
}
TA贡献1810条经验 获得超4个赞
public static int largestPossibleNumber(int n) {
return (int) (Math.pow(10.0, n)) -1;
}
添加回答
举报