Показать сообщение отдельно
  #28  
Старый 14.02.2015, 17:22
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Можно конечно и свой велосипед придумать, но есть готовые решения, считаемые легко и довольно удобно. Я обычно использую табличные варианты. Из простых есть еще известный ror13-хеш:
Код:
hash := 0;
for i := 1 to length(str) do
   hash := ((hash shl (32-13)) or (hash shr 13)) + str[i];
После чего делаем массив списков, в списке храним все элементы с соответствующим хешом. При поиске берем по индексу список и проверяем все его элементы уже на полное совпадение строки.
При удалении в данном случае достаточно опять же найти нужный элемент и исключить из соответствующего списка.
И вообще, вот.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием