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