Очень быстрый поиск подстроки - 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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д