Уникальное количество слов - PullRequest
1 голос
/ 19 апреля 2011

Это общий вопрос, который относится (возможно) к любому высокоуровневому языку программирования.Вот ситуация:

Предположим, у меня есть массив строк.Скажем, мне удалось поместить 500 000 строк из короткого рассказа в массив (предположим, у вас нет опции для формата ввода).Следовательно, скорее всего будет произвольное количество дублированных элементов.

Я хочу взять этот массив строк и создать другой массив, который содержит уникальное подмножество (?) Этого массива (то есть: без дубликатов).В этом сценарии и вход, и выход должны быть массивами, так что это может ограничить вас от различных вариантов.

Что касается производительности, какой самый быстрый способ сделать это?В настоящее время я использую линейный поиск, чтобы проверить, существует ли уже слово, но так как это линейный поиск, я чувствую, что могут быть более быстрые способы, особенно если у меня есть необоснованное количество строк для работы.Как большой роман!

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

Использование хэш-набора может быть наиболее разумным - сложность должна быть O (N).

Примечание: большинство языков программирования высокого уровня содержат реализацию функции, которая удаляет дубликаты из массиванапример, PHP .

1 голос
/ 19 апреля 2011

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

И все же это концептуальнопростая структура данных.

...