Как эффективно вернуть максимально возможное целое число с заданным количеством цифр - PullRequest
0 голосов
/ 06 сентября 2018

Например, какой самый эффективный способ получить, скажем, 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));
}

Выход:

9
99
999
9999
99999

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

Вы запрашиваете самый эффективный способ. Довольно сложно доказать, что какой-то способ является наиболее эффективным - это потребует, по крайней мере, реализации и сравнения нескольких методов.

Но вот довольно быстрый способ сделать это - просто создайте Map или используйте switch, см. Ниже. Это работает, потому что размер int фиксирован. Обратите внимание, что этот метод не распространяется, скажем, на BigInteger s.

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();
    }
}
0 голосов
/ 06 сентября 2018
public static int largestPossibleNumber(int numDigits) {
  return (int) (Math.pow(10, numDigits)) - 1;
}
0 голосов
/ 06 сентября 2018

У вас есть только 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];
  }
0 голосов
/ 06 сентября 2018
public static int largestPossibleNumber(int n) {
    return (int) (Math.pow(10.0, n)) -1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...