Условия задачи: Задано число x, десятичная запись которого не содержит нулей. Рассматриваются все числа, которые можно получить из числа x перестановкой его цифр. M- наибольшее из таких чисел, а m- наименьшее. Определяется число K(x) как (M-m).
Например, для x = 6174 получаем M = 7641, m = 1467. K(x) = 7641 - 1467 = 6174. Нужно написать логику программы для вычисления K(x) по заданному x.
На входе мы вводим в консоль число x, а на выходе должны получить результат вычисления K(x).
Вот мой код:
public class Main {
public static String sortString(String x){
char tempArray[] = x.toCharArray();
Arrays.sort(tempArray);
return new String(tempArray);
}
public static String sortReverseString(String x){
char tempArray[] = x.toCharArray();
Arrays.sort(tempArray, Collections.reverseOrder());
return new String(tempArray);
}
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String x = scanner.nextLine();
int m = Integer.parseInt(sortString(x));
int M = Integer.parseInt(sortReverseString(x));
System.out.println(M-m);
}
}
Проблема в методе sortReverseString(). Я не понимаю как сделать корректно реверс и получить число, где цифры стоят по убыванию.
Anonymous #3131362
43 уровень
Как корректно написать обратный реверс по убыванию?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
very junior java developer
29 марта 2023, 15:31полезный
Думаю что так будет лучше всего, если ты передаёшь в метод строку и строку возвращаешь
Если я конечно правильно понял вопрос.... тебе ведь надо строку просто развернуть наоборот?? тебе нужно отсортировать в по убыванию?? +1
very junior java developer
29 марта 2023, 16:09
Короче если отсортировать надо то примерно вот так, только подредактируй под сигнатуру метода :
0
very junior java developer
29 марта 2023, 16:16
или так, но там уже нюансы))) :
0
Anonymous #3131362
30 марта 2023, 06:21
Спасибо за помощь, я вчера долго тупил и не мог понять как решить. Там нужно было не просто строку развернуть, а еще чтобы числа в порядке убывания выстраивались. То есть, если мы вводим число 3265, то обычный реверс строки выдает 5623, а нужно получить на выходе 6532.
Вот моё итоговое рабочее решение.
public class Main {
public static String sortString(String x){
char tempArray[] = x.toCharArray();
Arrays.sort(tempArray);
return new String(tempArray);
}
public static String sortReverseString(String x) throws Exception{
char tempArray[] = x.toCharArray();
Arrays.sort(tempArray);
return new StringBuilder(String.valueOf(tempArray)).reverse().toString();
}
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String x = scanner.nextLine();
int m = Integer.parseInt(sortString(x));
int M = Integer.parseInt(sortReverseString(x));
System.out.println(M-m);
}
}
0
very junior java developer
30 марта 2023, 07:14
оо супер.... я во втором варианте намудрил конечно с treemap))
0