Очень быстрый поиск подстроки - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! На каждом шаге программы генерируется строка, нужно проверить есть ли она в исходном тексте. Шагов очень много, текст длинный. Когда я использую поиск string.Contains() программа работает часами. Подскажите как ускорить поиск? Хотелось бы готовый алгоритм, библиотеку, класс... Ну и теорию конечно.

Решение задачи: «Очень быстрый поиск подстроки»

textual
Листинг программы
  1. public override int GetHashCode()
  2.         {
  3.             unsafe
  4.             {
  5.                 fixed (char* src = this)
  6.                 {
  7.                     int hash1 = (5381<<16) + 5381;
  8.                     int hash2 = hash1;
  9.  
  10.                     int* pint = (int *)src;
  11.                     int len = this.Length;
  12.                     while(len > 0) {
  13.                         hash1 = ((hash1 << 5) + hash1 + (hash1 >> 27)) ^ pint[0];
  14.                         if( len <= 2) {
  15.                             break;
  16.                         }
  17.                         hash2 = ((hash2 << 5) + hash2 + (hash2 >> 27)) ^ pint[1];
  18.                         pint += 2;
  19.                         len  -= 4;
  20.                     }
  21.                     return hash1 + (hash2 * 1566083941);
  22.                 }
  23.             }
  24.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут