Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > подсчитать колличество слов в тексте


Автор: Samotnik 9.2.2012, 21:11
Задача вроде тривиальна для 1-го курса универа.
Но какое решение самое оптимальное и универсальное? 
Допустим строка очень большая, и нужно подсчитать какое слово больше всего встречается в тексте и сколько раз. Решение split(" ") и дальше проходить циклом очень долгое. Какие ещё идеи есть? )

Автор: Skynin 9.2.2012, 22:14
StringTokenizer сработает в этой задаче в разы быстрей.

Быстрее будет только:
String.charAt
и посик/размещение в сбалансированном двоичном дереве.

Автор: Stolzen 10.2.2012, 04:59
В решении олимпиадных задач чаще всего используют StreamTokenizer, т.к. он быстрее всего работает.
http://acm.timus.ru/help.aspx?topic=java

Автор: Samotnik 10.2.2012, 10:20
Я думаю, всё же вариант с деревом будет по-быстрее.

Автор: Stolzen 10.2.2012, 10:23
Почему так думаете? 
Берете токенизер, создаете HashMap<String, Integer> и считаете количество слов.

Автор: Samotnik 10.2.2012, 10:47
надо замерить ))

Автор: Pawl 12.2.2012, 21:56
я делал подобное (правда, на 3-курсе smile ). Только еще и слова сортировал TreeMap'ом. Думаю, если HashMap использовать, быстрее будет. Выкладываю исходник - потестите, расскажите, как Вам оно smile .

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)