Hash算法有很多很多种类。
/**
* Hash算法大全<br>
* 推荐使用FNV1算法
* @algorithm None
* @author Goodzzp 2006-11-20
* @lastEdit Goodzzp 2006-11-20
* @editDetail Create
*/
public class HashAlgorithms
{
/**
* 加法hash
* @param key 字符串
* @param prime 一个质数
* @return hash结果
*/
public static int additiveHash(String key, int prime)
{
int hash, i;
for (hash = key.length(), i = 0; i < key.length(); i++)
hash += key.charAt(i);
return (hash % prime);
}
/**
* 旋转hash
* @param key 输入字符串
* @param prime 质数
* @return hash值
*/
public static int rotatingHash(String key, int prime)
{
int hash, i;
for (hash=key.length(), i=0; i<key.length(); ++i)
hash = (hash<<4)^(hash>>28)^key.charAt(i);
return (hash % prime);
// return (hash ^ (hash>>10) ^ (hash>>20));
}
// 替代:
// 使用:hash = (hash ^ (hash>>10) ^ (hash>>20)) & mask;
// 替代:hash %= prime;
/**
* MASK值,随便找一个值,最好是质数
*/
static int M_MASK = 0x8765fed1;
/**
* 一次一个hash
* @param key 输入字符串
* @return 输出hash值
*/
public static int oneByOneHash(String key)
{
int hash, i;
for (hash=0, i=0; i<key.length(); ++i)
{
hash += key.charAt(i);
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
// return (hash & M_MASK);
return hash;
}
/**
* Bernstein's hash
* @param key 输入字节数组
* @param level 初始hash常量
* @return 结果hash
*/
public static int bernstein(String key)
{
int hash = 0;
int i;
for (i=0; i<key.length(); ++i) hash = 33*hash + key.charAt(i);
return hash;
}
//
//// Pearson's Hash
// char pearson(char[]key, ub4 len, char tab[256])
// {
// char hash;
// ub4 i;
// for (hash=len, i=0; i<len; ++i)
// hash=tab[hash^key[i]];
// return (hash);
// }
//// CRC Hashing,计算crc,具体代码见其他
// ub4 crc(char *key, ub4 len, ub4 mask, ub4 tab[256])
// {
// ub4 hash, i;
// for (hash=len, i=0; i<len; ++i)
详细解决方案
Hash算法解决思路
热度:1427 发布时间:2013-02-26 00:00:00.0
相关解决方案
- asp.net url# hash 有关问题
- 寻求MD5 HASH 解密算法
- .net 中的hasttable 和 数据结构算法里面的hash 排序 、hash 查找是不是同一个概念?解决方案
- hash 地图 存成<string,string>这样占空间吗
- 惯用的php代码,hash,split,unset
- 大家帮帮忙~hash << 5 + hash 中的<<是什么意思?该如何处理
- Ajax保存浏览器历史的两种解决方案(Hash&Pjax)
- window.location.hash 属性如何使用?
- hash map插入数据的有关问题
- hash join概念解决办法
- hash map有关问题
- PHP内核探索之变量(三)- hash table
- 惯用的php代码,hash,split,unset
- 大家帮帮忙~hash << 5 + hash 中的<<是什么意思?该如何处理
- ruby学习笔记-Hash
- Hive ERROR: Out of memory due to hash 地图s used in 地图-side aggregation
- HMAC with the SHA256 hash 编码
- SQL 揭示介绍 hash/merge/concat union
- Redis主要的五种数据结构及其操作,写了三种String,Hash,List
- hash id转换为key
- 4917: Hash Killer IV
- 9-9 (hash, pb_ds)
- 【Wannafly挑战赛9】 A【筛法 暴力】B【KMP+思维】 C【HASH】
- Gym 100030F Magic Chains (BFS+HASH)
- ACM-ICPC 2018 徐州赛区网络预赛 I Characters with Hash (模拟水题)
- hash 加密 解密
- UVA - 1152 (Hash)
- 内置函数ltems、new、hash、eq
- tiny-warning.esm.js:12 Warning: Hash history cannot PUSH the same path; a new entry will not be adde
- Password(CodeForces-126B)(KMP算法变形,字符串Dp,Hash)