У меня есть строка s и целое число k (длина подстроки) , я пытаюсь написать функцию, чтобы она нашла лексикографически наименьшую и наибольшую подстрокидлиной k .И он возвращает строку, в которой самая маленькая и самая большая подстрока объединяются с символом новой строки.
До сих пор я решал проблему с помощью нижеследующего подхода, в котором я писал один и тот же код, чтобы найти как самую маленькую, так и самую большую подстроку, однако я хочу вернуть обеподстрока с одной строкой кода с потоком.
public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
smallest = IntStream.range(0, s.length() - k + 1).mapToObj((value) -> s.substring(value, value + k))
.collect(Collectors.minBy(String.CASE_INSENSITIVE_ORDER)).get();
largest = IntStream.range(0, s.length() - k + 1).mapToObj((value) -> s.substring(value, value + k))
.collect(Collectors.maxBy(String.CASE_INSENSITIVE_ORDER)).get();
return smallest + "\n" + largest;
}
Я ценю любые предложения, так как сейчас изучаю лямбду и поток.
Итак, как мне решить эту простую задачу?проблема элегантно ?