Создание массива круговых суффиксов

Для домашней задачи нам дают строку длины n, и нам говорят создать отсортированные суффиксы и отсортировать их таким образом, чтобы мы могли вернуть строку, соответствующую исходному индексу i-го индекса в отсортированном списке., Например, учитывая строку "медведи", мы имеем следующее:

!Коммерческая фотография

Другими словами, значение final_index[i], равное 2, означает, что изначально суффикс в индексе 2 находится в индексе i в отсортированном списке.

Моя проблема в том, что очевидное решение - использовать подстроку и построить sorted_suffixes, а затем отсортировать их, не разрешено, потому что мы не можем явно создавать суффиксы. Как можно преодолеть это ограничение? Спасибо за помощь.

1 ответ

Решение

Используйте компаратор для сортировки суффиксов с вызовом public static void sort(T[] a, Comparator c);

Преобразовать строку в массив символов

В компараторе определите сравнение так, чтобы оно сортировало суффиксы, лексикографически сканируя по одному символу за раз... Вам не нужно явно хранить суффиксы....

Используйте все классы-оболочки вместо необработанных классов

Другие вопросы по тегам