Удаление дубликатов из отсортированного массива Char

1

Я пытаюсь взять строку ниже, преобразовать ее в массив, отсортировать массив, а затем вынуть любые дубликаты. Я попал в отсортированную часть, но когда я запускаю это, надеясь, что дубликаты будут удалены, кажется, что печатается позиция вместо ценности.

Это также подсчет пробелов как длина, давая мне длину 59 для этого.

Могу ли я помочь выяснить, что мне нужно изменить? Спасибо вам всем!

import java.util.*;

public class Challenge208 {

public static void main(String[] args) {

    String numbers = "3 1 3 4 4 1 4 5 2 1 4 4 4 4 1 4 3 2 5 5 2 2 2 4 2 4 4 4 4 1";
    char[] chars = numbers.toCharArray();
    Arrays.sort(chars);
    System.out.println(chars);

    int current = chars[0];
    boolean found = false;

    for (int i = 0; i < chars.length; i++) {
        if (current == chars[i] && !found) {
            found = true;
        }else if (current != chars[i]) {
            System.out.print(" " + current);
            current = chars[i];
            found = false;
        }
    }
    System.out.print(" " + current);

}
}
  • 1
    stackoverflow.com/questions/29573018/...
  • 0
    Спасибо! У меня все еще есть одна ошибка, где мой вывод имеет тонну пробелов. Есть ли способ исправить это?
Показать ещё 1 комментарий
Теги:
arrays
sorting

3 ответа

0

Вместо использования массива u можно использовать treeet.. Он будет иметь отсортированный порядок и не будет дубликатов.. Но если в вашем сценарии вам нужен массив, то в этом случае ваша текущая переменная будет int вместо char, и вы не удаляете ни одного дубликата. вы просто печатаете, что всякий раз, когда вы находите этот символ, даже если этот элемент не имеет дубликатов и что только для char [0]

0

Вы не получаете индекс номера, но его значение ascii. Для получения дополнительной информации: http://www.asciitable.com/ Но решение выглядит следующим образом:

import java.util.*;

public class Challenge208 {

public static void main(String[] args) {

String numbers = "3 1 3 4 4 1 4 5 2 1 4 4 4 4 1 4 3 2 5 5 2 2 2 4 2 4 4 4 4 1";
char[] chars = numbers.toCharArray();
char[] results = new char[10];
Arrays.sort(chars);
System.out.println(chars);

char current = chars[0];
int size = 0;
boolean found = false;

for (int i = 0; i < chars.length; i++) {
    if (current == chars[i] && !found) {
        found = true;
    }else if (current != chars[i]) {
        System.out.print(" " + current);
        size++;
        current = chars[i];
        found = false;
    }
}

System.out.print(" " + current);
System.out.print("\n"+size);

}
}
  • 0
    Если это тот ответ, который вы искали, не могли бы вы отметить его как правильный ответ?
0

current должен быть type char not int. Чтобы избавиться от пробелов, вы можете распечатать, если current не является пространством.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню