哈希值?

哈希值?

https://img1.sycdn.imooc.com//climg/61fb635c098d082717181307.jpg

这里的前面哈希值和后面的哈希值,那不是新添加的一个字符哈希值都是4计算好之后,分别是1234和4123吗,那不是哈希值不等吗?

https://img1.sycdn.imooc.com//climg/61fb6415098a4a8517061302.jpg

在后一小节的代码实现中,这里的哈希值不是不等的吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

那页 ppt 中介绍的是,以 123 为例。如果有一个 4 在 123 的后面,哈希值如何计算;如果有一个 4 在 123 的前面,哈希值如何计算。一个新的字符在已经计算好哈希值的字符串的前面或者后面,计算方式是不同的。


但在代码中,如果从前往后看,有一个 1234 的话,4 在 123 的后面,从后往前看,有一个 1234 的话,是看到 1 在 234 的前面。


使用一个小的测试用例,实际单步跟踪一下代码,试试看?


继续加油!:)

  • 你好,波波老师,我这边想顺便请问,取模运算,只有对于有除法运算的情况下,滚动哈希才会出问题,那对于减法的情况呢,比如这节,前缀红色部分,有除法会出问题,蓝色部分,后缀不断减少,是减法,是可以不用开数组,用一个变量就进行哈希滚动了吧?
    https://img1.sycdn.imooc.com//climg/62357eab09b034a909280556.jpg

    2022-03-19 14:58:42
  • 减法在课程后续会介绍。减法最大的问题是,如果结果是负数怎么办?不同的语言对负数取模的定义是不同的。最安全的方式是:如果计算 a - b 对 M 取模的结果(其中 a 和 b 都在 [0, M) 的范围里),使用 (a - b + M) % M,加上一个 M 保证了结果一定为正数,并且没有改变模意义下的结果。

    2022-03-19 21:49:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师