Java - Учитывая строку, как упорядочить все ее символы в алфавитном порядке для создания новой строки? - PullRequest
2 голосов
/ 07 февраля 2012

Например, если я начну со строки "dcab", я хочу функцию, которая берет эту строку и выдает из нее строку "abcd".Точно так же "кошка" должна производить "акт".Я пытаюсь придумать эффективный способ сделать это.Спасибо за любую помощь.

Ответы [ 3 ]

13 голосов
/ 07 февраля 2012
  1. Преобразовать строку в массив символов
  2. Использовать Arrays.sort(char[] a)
  3. Преобразовать отсортированный массив символов в новую строку

Неслишком уверен в эффективности, но это, вероятно, самая простая реализация.

12 голосов
/ 07 февраля 2012

Самый быстрый способ сделать это (особенно если у вас достаточно маленький алфавит для работы, а не весь Unicode) - это сделать Pigeonhole sort .

Обратите внимание, что для очень большой строки это будет намного быстрее, чем Arrays.sort(), потому что Arrays.sort() - это (IIRC) сортировка слиянием, поэтому она выполняется за O(n log n) время, в то время как сортировка Pigeonhole выполняется с O(n + N) время, где n - количество элементов, а N - количество элементов алфавита.

4 голосов
/ 07 февраля 2012
char[] array = str.toCharArray();
Arrays.sort(array)
return new String(array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...