博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode 128哈希函数
阅读量:6714 次
发布时间:2019-06-25

本文共 1124 字,大约阅读时间需要 3 分钟。

描述

在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如:

hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d)) % HASH_SIZE 

                              = (97* 333 + 98 * 332 + 99 * 33 +100) % HASH_SIZE

                              = 3595978 % HASH_SIZE

其中HASH_SIZE表示哈希表的大小(可以假设一个哈希表就是一个索引0 ~ HASH_SIZE-1的数组)。

给出一个字符串作为key和一个哈希表的大小,返回这个字符串的哈希值。

说明

For this problem, you are not necessary to design your own hash algorithm or consider any collision issue, you just need to implement the algorithm as described.

样例

思路

根据描述以及哈希函数和哈希表的定义,并且根据已经给的样例,就能解决问题。另外,所给的样例中应该返回978,而不是78,这个也在lintcode的运行数据处得到了证实。

class Solution {public:    /**     * @param key: A String you should hash     * @param HASH_SIZE: An integer     * @return an integer     */    int hashCode(string key,int HASH_SIZE) {        if (key.empty())            return 0;        int len = key.size();        long int accout = (int)key[0];        for (int i = 1; i < len; ++i)        {            accout =accout*33%HASH_SIZE+(int)key[i];        }        return accout%HASH_SIZE;    }};

 

转载于:https://www.cnblogs.com/li1400802003/p/7342688.html

你可能感兴趣的文章
sed 命令学习笔记
查看>>
IntelliJ IDEA 2017.3.1 使用手册
查看>>
互联网协议入门(2)
查看>>
泛型的通配符问题
查看>>
DataSource的可配参数有哪些,有哪些DataSource可以用
查看>>
简介数据仓库
查看>>
免费的后台管理界面框架
查看>>
本地文件共享服务(nfs samba ftp)
查看>>
scp通过代理proxy传输文件
查看>>
excel 打开时报“发现不可读的内容...”
查看>>
pandas-利用python进行数据分析
查看>>
数据段、代码段、堆栈段、BSS段的区别
查看>>
Apache Bench
查看>>
WebService之Axis2快速入门(5): 管理会话(Session)
查看>>
以太坊RPC接口使用
查看>>
小管家,一款个人记帐工具^_^
查看>>
轻应用高并发构建方案
查看>>
普通html标签<form>和struts2<s:form>的区别
查看>>
安装NTFS For Mac时显示文件已损坏怎么办
查看>>
-webkit-line-clamp实现多行文字溢出隐藏显示省略号
查看>>