字符串哈希

前言

一个很灵活的算法。

1. 原理

哈希本质上是一种映射关系,在字符串中也如此。
对于任意的一个字符串,我们通过某一个哈希函数求解出这个字符串中每一个子串的哈希值。
一个好的哈希函数有这样的性质:

  • 当两个字符串相同时,两者由哈希函数生成的哈希值也相等。
  • 当两个哈希值相等时,通过哈希函数生成这两个值的两个字符串也是相等的。
  • 当两个字符串不同时,其生成的哈希值相同的概率应尽可能小。

使用了好的哈希函数的字符串哈希算法可以在 on 的时间内求解出一个字符串所有子串的哈希值,可以在 o1 的时间复杂度内判断两个字符串是否相等。

2. 实现

虽然我们要求出一个字符串中每一个子串的哈希值,但并不需要枚举每一个子串。我们使用前缀和的思想,通过递推,利用数学方法就可以很快求解。

迁移自洛谷

posted @ 2025-02-04 13:24  hm2ns  阅读(9)  评论(0)    收藏  举报