为了账号安全,请及时绑定邮箱和手机立即绑定

如何有效地返回具有给定位数的最大可能整数

如何有效地返回具有给定位数的最大可能整数

幕布斯7119047 2021-09-03 13:25:04
例如,999如果给定一个n等于 3,那么最有效的方式是什么。这就是我现在所拥有的,但我想知道是否有更优雅的方式。public static int largestPossibleNumber(int numDigits) {  return Integer.parseInt(new String(new char[numDigits]).replace("\0", "9"));}示例用法:for (int i = 1; i <= 5; i++) {  System.out.println(largestPossibleNumber(i));}输出:999999999999999
查看完整描述

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];

  }


查看完整回答
反对 回复 2021-09-03
?
一只名叫tom的猫

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();

    }

}


查看完整回答
反对 回复 2021-09-03
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

public static int largestPossibleNumber(int n) {

    return (int) (Math.pow(10.0, n)) -1;

}


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信