Найти числа в массиве, начиная с определенной цифры - PullRequest
0 голосов
/ 17 октября 2019

В поисках идей для эффективного решения (я знаю, что здесь требуется цикличность), чтобы найти число, начинающееся с определенной цифры в массиве. Если несколько цифр соответствуют цифрам, вернуть наименьшее найденное. например - Array - [1234,1235,1236,43232,12443,5646334,1231412,6798796,8987]

Функция с сигнатурой, аналогичной fun (array, statingDigit) Возвращает 43232при вводе (массив, 4) Возвращает 1234 при вводе (массив, 1)

Ответы [ 2 ]

5 голосов
/ 17 октября 2019

Использование потоков:

int[] array = {1234,1235,1236,43232,12443,5646334,1231412,6798796,8987};
OptionalInt match = Arrays.stream(array)
    .filter(p -> String.valueOf(p).startsWith("1"))
    .sorted()
    .findFirst();

if (match.isPresent()) {
    System.out.println(match.getAsInt());
}
else {
    System.out.println("No matching number found");
}
1 голос
/ 17 октября 2019

Вот решение с использованием цикла for:

private static int fun(int[] array, String startingDigit) {
    int num = array[0];
    for (int i : array)
        if (i < num && Integer.toString(i).startsWith(startingDigit))
            num = i;
    return num == array[0] ? -1 : num;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...