java - Rabin-Karp 算法:为什么 h=(h*d)%q
问题描述
我在 Rabin-Karp 算法中了解以下内容
h=d^m-1 但我不明白我们为什么要写
for(i=0;i<M-1;i++)
h=(h*d)%q
在代码中
解决方案
基本上,这些行正在为您的哈希映射初始化默认值,稍后您将对其进行更改,并且它也可以用作哈希函数,当您将插入值时,请阅读下面的段落,并投票并关注我的个人资料。当你试图理解 hashmaps 的概念时,每个人都会通过串联一些块来教你。后来,这些块被初始化了一些键值,但在您插入键值之前,这些块未初始化。所以可能有一些块没有被赋予任何关键值。它们将包含垃圾值,以及如何遍历它们,因为当您需要搜索某些内容时,您需要遍历,因此该函数正在为所有块初始化默认值。现在,如果您尝试在没有这些行的情况下运行您的代码,您的代码将只检查第一次。我所知 ,
推荐阅读
- javascript - 用对象内部的内容替换数组的最佳方法
- c++ - 结果已关闭
- google-cloud-platform - 您可以使用只写权限写入 GCP PubSub 吗?
- sql - 有没有办法获得“星期几”
- yum - 在 Centos 8.1 上使用 Yum DNF 时出错 无法下载 repo 'AppStream' 的元数据
- excel - 从表中复制一个值并打印
- asp.net - asp.net core razor 页面模型公共列表变量在发布后重置为空,而字符串变量不重置
- python - 尝试创建一个循环以将变量从一个数组添加到另一个数组
- visual-studio-code - 将 VSCode 设置从一台 Mac 完全转移到另一台
- python - 使用 If vs If else 列出理解