Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2009, 22:17   #1
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
Плохо как оптимальным способом проверить, встречалось ли слово в тексте

Здравствуйте, не могли бы вы мне помочь
есть текст
все слова в нем разделены пробелами (причем одиночными)
слово может состоять из 1..50 символов
а слов может быть до 20000
как проверить встречалось ли раньше это слово в тексте
нужен оптимальный вариант

вариант - загнать все слова в массив
а затем прогонять есть ли новое слово в массиве - не проходит

и вариант со множеством - просто проверять
новое слово in slova
не проходит так как нельзя создать множество типа string[50]
(slova: set of string[50])

какие есть еще варианты
заранее спасибо!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 24.10.2009, 00:20   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

А такой вариант вам не подходит:
Код:
var search, text: string;
begin
  search := 'слово';
  text:= 'все слова в нем разделены пробелами причем одиночными слово может состоять из 1..50 символов';
  if pos((' ' + search + ' '), text) > 0 then caption := 'Есть такое слово';
end;
Gorychev вне форума Ответить с цитированием
Старый 25.10.2009, 02:33   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Можно строить бинарное дерево поиска по ходу дела, в нём искать будет уже намного быстрее
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 25.10.2009, 07:18   #4
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Алгоритм Бойера — Мура — Хорспула
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сколько раз в тексте встречается каждое слово. 08ekhiv1 Помощь студентам 2 11.03.2009 10:56
Определить в тексте слово, содержащее минимальное число согласных stasig Помощь студентам 3 15.02.2009 13:11
Как найти слово в тексте ? geniy Паскаль, Turbo Pascal, PascalABC.NET 2 03.02.2008 21:37
Определить сколько раз встречается в тексте самое короткое слово - Delphi 7 Леди Уинтер Помощь студентам 3 08.01.2008 17:56