leetcode 实现hash-function java solution
2017-01-19 10:10
369 查看
题目要求:
在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如:
hashcode(“abcd”) = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 + ascii(d)) % HASH_SIZE
其中HASH_SIZE表示哈希表的大小(可以假设一个哈希表就是一个索引0 ~ HASH_SIZE-1的数组)。
给出一个字符串作为key和一个哈希表的大小,返回这个字符串的哈希值。
注意事项
对于这个问题你不需要自己设计hash算法,你只需要实现上述描述的hash算法即可。
您在真实的面试中是否遇到过这个题? Yes
样例
对于key=”abcd” 并且 size=100, 返回 78
在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值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和一个哈希表的大小,返回这个字符串的哈希值。
注意事项
对于这个问题你不需要自己设计hash算法,你只需要实现上述描述的hash算法即可。
您在真实的面试中是否遇到过这个题? Yes
样例
对于key=”abcd” 并且 size=100, 返回 78
class Solution { /** * @param key: A String you should hash * @param HASH_SIZE: An integer * @return an integer */ public int hashCode(char[] key, int HASH_SIZE) { // write your code here if (key == null) { return -1; } if (key.length == 0) { return 0; } long power = 0; for (int i = 0; i < key.length; i++) { power = (power * 33 + key[i]) % HASH_SIZE; } return (int)power; } }
相关文章推荐
- leetcode: add two numbers , hash search solution, java. O(n)
- 【LeetCode】396. Rotate Function(java实现)
- leetcode: two sum, hash search solution, java. O(n)
- 【LeetCode】396. Rotate Function(java实现)
- Java String中的hashCode函数 以BKDR Hash Function实现
- 【Leetcode】Sort List JAVA实现
- 【Leetcode】Insertion Sort List JAVA实现
- Leetcode平台上的Median of Two Sorted Arrays题目用Java快排实现
- Leetcode平台上的Median of Two Sorted Arrays题目用Java堆算法实现
- 重温数据结构:哈希表,MyHashMap与MyHashSet的Java实现
- 153.Find Minimum in Rotated Sorted Array [LeetCode Java实现]
- leetcode题--Java实现
- 数据结构-完全hash,二级哈希java实现
- java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode; 解决办法
- 一致性Hash Java实现版
- 169 Majority Element [LeetCode Java实现]
- 【leetcode】Find Minimum in Rotated Sorted Array JAVA实现
- Leetcode平台上的TwoSum题目用Java哈希表实现
- leetcode Length of Last Word java实现
- LeetCode OJ平台上Binary Tree Inorder Traversal题目使用java堆栈方式实现