Ivan Sokolov: В первой строке находится единственное число N (1 ≤ N ≤ 105) — количество слов в найденных текстах. Каждая из следующих N строк содержит слово wi (непустая последовательность строчных латинских букв длиной не более 15) и целое число ni (1 ≤ ni ≤ 106) — число раз, которое встречается это слово в текстах. Слово и число разделены единственным пробелом. Ни одно слово не повторяется более одного раза. В (N + 2)-й строке находится число M (1 ≤ M ≤ 15000). В следующих M строках содержатся слова ui (непустая последовательность строчных латинских букв длиной не более 15) — начала слов, введенных пользователем.
Сама задача пример.
Исходные данные:
5
kare 10
kanojo 20
karetachi 1
korosu 7
sakura 3
3
k
ka
kar
результат:
anojo
kare
korosu
karetachi
Ivan Sokolov: lookup-метод сортирует массив по числу, если числа одинаковые, то по алфавиту
retriev-метод проверяет, если слово начинается на присылаемое слово, то добавляет в список на отправку. Если сортировки не было, то запускает её
Да, где-то на 3-5 секунд помогло.
nomStr - сортируется по возрастанию.
В лист stroka - добавляется массив вытаскивая из nomStr число, number.indexOf- определяет его положение в листе number и вытаскивается само слово из str.
Потом число в nomStr заменяется, чтобы ещё раз не вызвать это слово.
Если есть предложение чтобы по другому сделать выслушаю. Первое что пришло в голову реализовал. Но скорости не хватает(((
Ivan Sokolov: Очень долго работает сортировка Collections.sort(nomStr); - можно ли её чем нибудь по быстрее заменить или есть идеи на другую сортировку?
Dmitry Roo: lookup-метод сортирует массив по числу, если числа одинаковые, то по алфавиту
retriev-метод проверяет, если слово начинается на присылаемое слово, то добавляет в список на отправку. Если сортировки не было, то запускает её
Я подумаю как можно сделать ваше решение