Действительно, если строки все разные по длине, то длину и взять.
Если возможны и одинаковые по длине строки, то добавить в хеш несколько символов из строки, позиции которых брать псевдослучайно (но строго детерминированно и всегда одинаково!). Для обычных сильно не совпадающих строк работать будет быстро (фактически
), для хорошо совпадающих - зависит от выбора позиций и тут уж без априорной статистики о самих строках не обойтись (например предъявив все
возможных перестановок строк длины
из алфавитап в
символов мы собъём любой возможный хеш).
Взяв не фиксированное количество символов в хеш, а например
символов (в позициях с простыми индексами или даже с индексами
) получим время
. Тут для усложнения можно выбирать разные функции индексов в зависимости от значения
, на
это уже не повлияет.
Саму функцию вычисления хеша взять какую-нибудь хорошо исследованную, с известными параметрами и свойствами.