Очень быстрый поиск подстроки - 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);
                }
            }
        }

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


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

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

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