Хэширование строки - представление строки в виде какого-то числа, уникального (будем считать, что шанс коллизии пренебрежительно мал) для каждой строки. Это позволяет хранить какие либо важные данные (вроде паролей) в базе данных не в виде строк, а в виде чисел. Это позволяет защитить пароли, если злоумышленник получит доступ к базе данных паролей, ибо он получит не сами пароли, а только их численное представление, а получить строку по ее хэшу (особенно не зная алгоритм хэширования) практически невозможно.
В задачах по олимпиадному программированию чаще всего используется полиномиальный хэш.
Один из лучших способов определить хэш-функцию от строки S следующий:
h(S) = S[0] + S[1] * P + S[2] * P^2 + S[3] * P^3 + ... + S[N] * P^N