第19讲平衡B-散列摘要.ppt

第19讲平衡B-散列摘要

HASH应用 找名字 给定一个全部由字符串组成的字典,字符串全部由大写字母构成。其中为每个字符串编写密码,编写的方式是对于 n 位字符串,给定一个 n 位数,大写字母与数字的对应方式按照电话键盘的方式:       2: A,B,C   5: J,K,L   8: T,U,V       3: D,E,F   6: M,N,O   9: W,X,Y,Z       4: G,H,I   7: P,R,S 题目给出一个 1--12 位的数,找出在字典中出现且密码是这个数的所有字符串。字典中字符串的个数不超过 5000 。 分析 对于给定的编码,只需要一个回溯的过程,所有可能的原字符串都可以被列举出来,剩下的就是检查这个字符串是否在给定的字典中了。 所以这个问题需要的还是“某个元素是否在已知集合中?”由于给出的“姓名”都是字符串,因此我们可以利用字符的 ASCII 码。 那么,如何设计这个哈希函数呢?注意到题目给出的字典中,最多能有5000 个不同元素,而一个字符的 ASCII 码只能有26 种不同的取值,因此至少需要用在3个位置上的字符(26^3 5000,但是 26^2 5000 ),于是我们就选取3个位置上的字符。由于给定的字符串的长度从 1--12 都有可能,为了容易实现,选取最开始的1个字符和最末尾的2个字符。让这3个字符组成26进制的3位数,则这个数的值就是这

文档评论(0)

1亿VIP精品文档

相关文档