Автор решения - Голубцов Евгений
Дата - 28.01.2018
Есть строка, состоящая из слов. Все слова в ней разделены одним пробелом. Нужно преобразовать строку в такую структуру данных, которая группирует слова по первой букве в слове.
Затем вывести только группы, содержащие более одного элемента. Группы должны быть отсортированы в алфавитном порядке по всем буквам в слове.
Слова внутри группы нужно сортировать по убыванию (по количеству символов); если число символов равное, то сортировать в алфавитном порядке.
Пример строки: String s = "сапог сарай арбуз болт бокс биржа"
Отсортированная строка: [б=[биржа, бокс, болт], c=[caпог, сарай]]
При решении были приняты следующие допущения:
- версия JRE - 1.8.
- строка задаётся в режиме диалога из консоли (кодировка для Windows - cp1251, для Linux - UTF-8);
- все буквы преобразуются в нижний регистр;
- повторы слов исключаются;
- отсортированная строка представляется в фигурных скобках "{}"", а группы - в квадратных"[]"" (например, {б=[биржа, бокс, болт], c=[caпог, сарай]});
Для запуска следует использовать файл "alfabank_task.jar".
Ключи запуска из консоли:
- "-c" - ввод строки из консоли (например, "java -jar alfabank_task.jar -c");
- без ключа - запуск в демо-режиме (например, "java -jar alfabank_task.jar").
Для корректной работы в Windows настройте кодировку консоли cp1251, введя команду "ChCp 1251".
Также, для проверки работы программы в консольном режиме можно запустить следующие файлы:
- start.bat (для Windows, кодировка уже настроена);
- start.sh (для Linux).