字符串哈希相关问题

字符串哈希相关问题

如何对一个字符串进行哈希呢?

字符串哈希公式

str[i]:iP:hash(str[0..n])=str[0]Pn+str[1]P(n1)++str[n]P0=hash(str[0..n1])P+str[n]

哈希是指☞将元素映射为一个确定的数值。

input: anything output: number

哈希函数的应用场景:散列表中用于确定元素在散列表中的位置。

那么上述的哈希公式会不会问题呢?

是有的,就是当输入的元素越来越多时,难免会出现哈希碰撞。这种情况对于一些需要唯一值的场景就很搞。

那么有什么解决方法吗?

最简单的方法,就加多一个哈希函数,采用双哈希的方法,来确定唯一值。一般这种方法基本不会出现哈希碰撞。

除了哈希碰撞外,这个公式还有其他问题吗?

没错,当字符串长度大到一定程度时会溢出。

此时,可以采用取模来解决此问题。

hash(str[0..n])=((hash(n1)PmodN)+str[n])modN

如何求子串的哈希值?

hash(str[i..j])=hash(str[0..j])hash(str[0..i1])P(ji+1)=(str[0]Pj+str[1]P(j1)++str[i1]P(ji+1)++str[j]P0)(str[0]P(i1)+str[1]P(i2)++str[i1]P0)P(ji+1)=(str[0]Pj+str[1]P(j1)++str[i1]P(ji+1)++str[j]P0)(str[0]Pj+str[1]P(j1)++str[i1]P(ji+1))=str[i]P(ji)++str[j]P0

相关算法题:


__EOF__

本文作者Lht1
本文链接https://www.cnblogs.com/yghr/p/15725589.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   yghr  阅读(36)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示