Очень быстрый поиск подстроки - C#
Формулировка задачи:
Добрый день!
На каждом шаге программы генерируется строка, нужно проверить есть ли она в исходном тексте. Шагов очень много, текст длинный.
Когда я использую поиск string.Contains() программа работает часами.
Подскажите как ускорить поиск? Хотелось бы готовый алгоритм, библиотеку, класс... Ну и теорию конечно.
Решение задачи: «Очень быстрый поиск подстроки»
textual
Листинг программы
public override int GetHashCode()
{
unsafe
{
fixed (char* src = this)
{
int hash1 = (5381<<16) + 5381;
int hash2 = hash1;
int* pint = (int *)src;
int len = this.Length;
while(len > 0) {
hash1 = ((hash1 << 5) + hash1 + (hash1 >> 27)) ^ pint[0];
if( len <= 2) {
break;
}
hash2 = ((hash2 << 5) + hash2 + (hash2 >> 27)) ^ pint[1];
pint += 2;
len -= 4;
}
return hash1 + (hash2 * 1566083941);
}
}
}