2016-05-16 3 views
0

В настоящее время я работаю над небольшим проектом/игрой, который предполагает угадывание слов, которые заканчиваются определенным персонажем. чтобы выиграть, игрок должен победить компьютер в угадывании 3 слов, которые все заканчиваются в том же письме. Например, если я выбираю файлы cookie, snickers и библиотеки, я выиграю, потому что все 3 заканчиваются буквой «s».Как подсчитать дубликаты в списке массивов?

В моей игре каждое слово обрабатывается так, как оно воспроизводится, и последний символ добавляется в список массивов. Каков наиболее эффективный метод проверки и подсчета, если эта буква уже существует в списке массивов? Я видел некоторые вещи при удалении дубликатов и т. Д., Но в моем случае мне нужно иметь возможность идентифицировать дубликаты и следить за тем, чтобы 3 одинакового символа существовали внутри списка массивов.

+0

Где ваши коды? И что вы все пробовали? –

+0

Я не думаю, что код, который я до сих пор, так важен. Единственная трудность, с которой я сталкиваюсь, - это подсчет дубликатов в списке массивов. Я честно ничего не пробовал для этой части проблемы, потому что я не уверен, с чего начать/что лучший метод. Я рассмотрел создание массива с 26 слотами, которые я могу увеличить на основе буквы (буква «a» занимает слот 0/25, буква «c» занимает слот 2/25 ect), но я не уверен, что лучший способ определения позиционирования символов в алфавите. редактирование: я не добавил коды, потому что они не помогли бы мне объяснить мою ситуацию – corvonik

ответ

1

Пока это работает и дает ожидаемый результат, тогда все в порядке. Кроме того, решение, которое вы описываете в своем комментарии, может работать. То есть, создайте массив из 26 целых чисел и увеличьте его на основе буквы.

Можно преобразовать символ в int путем его литья. Чтобы их числить от 0 до 25, вы можете сделать (int) (c - 'a'), чтобы получить индекс. (int) ('a' - 'a') является 0, (int) ('b' - 'a') 1 и т.д. ...

+0

по какой-то причине, когда я написал это сообщение, что-то не щелкало. то, что я закончил делать, это брать символ «алфавит» (который имеет a-z как независимые символы), и я проверил последнюю букву против алфавита через цикл while. После этого я взял позицию букв (0-25) и увеличил эту позицию в целочисленном массиве, чтобы представить, какой символ имел более 1 использования. Я предполагаю, что то, что я искал, было решением «.contains» для массивов и подсчетами. – corvonik

0

1) скопировать список массива 'а' до 'B'

2) сорт 'B' (это позволяет шаг # 3 должно быть сделано в одной линейной частот)

3) перебирать " b 'и отслеживать, где повторяются.

4) делать то, что математику вы хотите на основе результатов

Это торгует от использования памяти для скорости обработки (плюс сохранение исходного списка массива, как это) (сортировка N Л.Г. N + 1 N для итерации списка = 2N lg N)

0

Вы можете использовать этот код ниже:

ArrayList<Character> characterArrayList;//Remember init arrayList and add elements... 
    int[] result = new int[26]; 
    for (char c : characterArrayList){ 
     result[c - 'a'] ++; 
    } 
Смежные вопросы