Как отсортировать строку с помощью Java - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь отсортировать строку.Я отсортировал первые буквы, но последующие не отсортированы.Мне также нужно добавить слова, которые не совпадают, с самым длинным словом с помощью *, но я понятия не имею, как это сделать.Моя БАЗА - 27. Алфавиты и символы * для отступа.Текущий результат - яблочный алгоритм australia jack olympic sell sleep

Для этой цели я использовал комбинацию Radix sort и Bucket Sort.Я звоню в Bucket Sort в виде Radix.Я думаю, что проблема в реализации сортировки BUcket.

 private static void bucketSort(List<String> S, int d, int i) {     
    while(!S.isEmpty()) {       
        int DIVISOR = pow(BASE, i-1);
        int MODULO = pow(BASE, i);  
        String s = S.remove(S.first());
        int index = (s.length() <= d)? 0: s.charAt(i) - ('a'-1);
        System.out.println(index);
        int value = s.charAt(index); 
        int index2 = (value / DIVISOR) % MODULO;

        buckets[index2].insertLast(s);
    }

    for (List<String> bucket : buckets) {
        while (!bucket.isEmpty()) {
            S.insertLast(bucket.remove(bucket.first()));
        }
    }
}
private static int pow(int base, int i) {
    int pow = 1;
    while (i > 0) {
        pow *= base;
        i--;
    }
    return pow;
}

алгоритм apple australia jack olympic sell sleep

1 Ответ

0 голосов
/ 08 апреля 2019

Почему вы не использовали существующие методы, такие как Collections.sort?

List<String> S = Arrays.asList("apple", "algorithm", "australia", "jack", "olympic", "sell", "sleep");
Collections.sort(S);

Или, если вы хотите указать функцию лямбда-сортировки:

S.sort((p1, p2) -> p1.compareTo(p2));

Есть ли какая-то причина, почему вы хотите заполнить? самое простое решение - найти максимальную длину всех строк и добавить пропущенные пробелы.

...