- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《字符串hash以及7大问题1.ppt《字符串hash以及7大问题1.ppt《字符串hash以及7大问题1.ppt
1
By peterpan
字符串hash简介
有关字符串hash的
7个问题!
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
字符串hash
关于字符串hash,就一句话:
把字符串有效地转化为一个整数
在计算机里,用的是二进制编码。在很多语言里,都是用数字作为数组的下标。因为用数字来存储、表达一个object非常方便。
如果能有一种算法,把每个字符串有效地、”唯一”的映射到每个“不同”的整数,我们就能很好的处理字符串。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
hash函数
现在我们希望找到一个hash函数,使得每一个字符串都能够映射到一个整数上
比如hash[i]=(hash[i-1]*p+idx(s[i]))%mod
字符串:abc,bbc,aba,aadaabac
字符串下标从0开始
先把a映射为1,b映射为2,c-3,d-4,即idx(a)=1, idx(b)=2, idx(c)=3,idx(d)=4;
好!开始对字符串进行hash
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
hash函数
假设我们取p=13 ,mod=101
先把abc映射为一个整数
hash[0]=1,表示 a 映射为1
hash[1]=(hash[0]*p+idx(b))%mod=15,表示 ab 映射为 15
hash[2]=(hash[1]*p+idx(c))%mod=97
这样,我们就把 abc 映射为 97 这个数字了。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
hash函数
用同样的方法,我们可以把bbc,aba,aadaabac都映射到一个整数
用同样的hash函数,得到如下结果
abc - 97
bbc - 64
aba - 95
aadaabac - 35
那么,我们发现,这是一个字符串到整数的映射
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
hash函数
这样子,我们就可以记录下每个字符串对应的整数,当下一次出现了一个已经出现的字符串时,查询整数是否出现过,就可以知道 字符串是否重复出现。
现在要判断两个字符串是否一致,怎么办呢?直接用它们的hash值判断即可,若hash值一致,则认为字符串一致;
若hash值不一致,则认为是不同的字符串。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
hash
我们要判断两个字符串是否一致,没有那么麻烦,直接先判断长度是否一致,然后再判断每个对应的字符是否一致即可。
但,如果要判断多个字符串里有多少个不同的字符串,怎么办呢?
两两字符串都进行比较?时间复杂度太高
把每个字符串hash成一个整数,然后把所有整数进行一个去重操作,即可知道答案了。
我们来具体看下这个问题。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
关于hash的简单问题
问题:
给N个字符串,每个字符串长度不超过100,问这些字符串里有多少个不同的字符串?
即相同字符串只取一个,最后剩下多少字符串?
数据范围:1=N=100000
字符集:小写英文字母(a-z)
Evaluation only.
Created with Aspose.Slides for .N
您可能关注的文档
- 《如何做好房地产高端项目的客户服务.ppt
- 《如何做好销售.ppt
- 《如何做课件.ppt
- 《如何写好作文开头--课件3.ppt
- 《如何写会议纪要.ppt
- 《如何写好作文的开头ppt课件.1ppt.ppt
- 《如何写好科技论文.pptx
- 《如何写好简报new.ppt
- 《如何写一段话.ppt
- 《如何切入的时机方式和话术.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)