Как получить числовой хеш заданной длины?

Есть строка состоящая из русского или любого алфавита. Нужно получить ее числовой хеш заданной длины. Даже если это строка состоит из одной буквы или нескольких хеш должен иметь одну длину. Это нужно для сортировки по алфавиту но через числовой хеш, чтобы быстро искать первое вхождение для вывода подсказок.
  • Вопрос задан
  • 651 просмотр
Пригласить эксперта
Ответы на вопрос 2
includedlibrary
@includedlibrary
Берите любую хэш-функцию. Например, хэш-функцию Дженкинса.

uint32_t jenkins_one_at_a_time_hash(char *key, size_t len)
{
    uint32_t hash, i;
    for(hash = i = 0; i < len; ++i)
    {
        hash += key[i];
        hash += (hash << 10);
        hash ^= (hash >> 6);
    }
    hash += (hash << 3);
    hash ^= (hash >> 11);
    hash += (hash << 15);
    return hash;
}
Ответ написан
LaRN
@LaRN
Senior Developer
Это похоже на задачу автодополнения. Может лучше вместо хэша попробовать использовать префиксное дерево?
Это неплохо описано например тут:
https://habr.com/ru/post/111874/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы