Как найти дубликаты и уникальные записи строк с помощью Hashtable - PullRequest
2 голосов
/ 24 мая 2011

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

например:

i / p:

привет привет пока привет привет привет привет день привет

o / p:

Уникальными элементами являются: пока, хорошо, имя, день

Повторяющиеся элементыявляются:

привет 3 раза

привет 2 раза

Ответы [ 3 ]

8 голосов
/ 24 мая 2011

Вы можете разделить вход, вызвав split(" ") на входной строке.Это вернет строку [], представляющую каждое слово.Выполните итерацию по этому массиву и используйте каждую строку в качестве ключа в вашей хэш-таблице со значением, являющимся целым числом.Каждый раз, когда вы сталкиваетесь со словом, либо увеличивайте его значение, либо устанавливайте значение 0, если в данный момент его нет.

Hashtable<String, Integer> hashtable = new Hashtable<String, Integer>();
String[] splitInput = input.split(" ");
for(String inputToken : splitInput) {
    Integer val = hashtable.get(inputToken);
    if(val == null) {
        val = new Integer(0);
    }
    ++val;
    hashtable.put(inputToken, val);
}

Кроме того, вам может потребоваться заглянуть в HashMap вместо Hashtable,HashMap не является потокобезопасным, но быстрее.Hashtable немного медленнее, но потокобезопасен.Если вы пытаетесь сделать это в одном потоке, я бы порекомендовал HashMap.

3 голосов
/ 24 мая 2011

Использовать хеш-таблицу со строкой в ​​качестве ключа и числовым типом в качестве счетчика.

Просмотрите все слова и, если их нет на карте, вставьте их; в противном случае увеличьте количество (часть данных хеш-таблицы).

НТН

Mario

0 голосов
/ 24 мая 2011

вы можете конвертировать каждую строку в целое число. Затем используйте сгенерированное целое число в качестве значения хеш-функции. Чтобы преобразовать строку в int, вы можете рассматривать ее как базовое число 256, а затем преобразовать

...