首页 > 其他分享 >字符串的hash函数

字符串的hash函数

时间:2022-12-13 16:32:06浏览次数:43  
标签:hash 函数 int unsigned str ans 字符串 return





字符串的hash函数:

(1)

unsigned int SDBMHash(char *str)
{
unsigned int hash = 0;

while (*str)
{
// 等价于: hash = 65599*hash + (*str++);
hash = (*str++) + (hash << 6) + (hash << 16) - hash;
}

return (hash & 0x7FFFFFFF);
}

(2)

//用跟元素个数最接近的质数作为散列表的大小
#define NHASH 29989
#define MULT 31unsigned in hash(char *p)
{
unsigned int h = 0;
for (; *p; p++)
h = MULT *h + *p;
return h % NHASH;
}

(3)

int hash(string i)
{
int l=i.length, s=7,ans=0,t=9999997;
for (int q=0;q<l;q++)
{
ans+=i[q]*s;
s*=7;
ans=ans%t;//在这里面%t,主要是为了防止数据溢出。
}
return ans;
}
//字符串里面的每一个数 比如字符串abc 写成 a*7^1+b*7^2+c*7^3 然后再取模 .

标签:hash,函数,int,unsigned,str,ans,字符串,return
From: https://blog.51cto.com/u_15911260/5934651

相关文章

  • JavaScript中比较字符串的4种方法
    严格平等要确定字符串是否相等,可以使用严格相等运算符。如果字符串不同,则返回,如果字符串相同,则返回===false trueconsts1='learn';consts2='today';console......
  • 关于在文章中插入js函数
    开始使用博客园的时候,还是很不熟练的,便操作边写,接着写了一半,发现结果行不通,很郁闷又不想删除,于是想着使用js函数隐藏内容。花了很长时间查资料,有很多方案,可能是我......
  • Java:Should I use a `HashSet` or a `TreeSet` for a very large dataset?
    这是StackOverflow上一个有意思的提问,记录一下。原地址在这翻译:对于大型数据集,应该使用”哈希集”还是”树集”?(因为HashTable有着O(1)的查找速度比树结构更有效率,虽然H......
  • 【C语言】进阶指针Ⅰ 字符串指针、常量字符串、指针数组、指针数组使用常见。
    ......
  • enum转字符串
    顶一个enum///<summary>///输入法语言。///</summary>publicenumLanguage{///<summary>///默认,不管他。///......
  • 字符串函数
    1.strlen与sizeof(返回字符串的长度,不包括结尾的0)  size_tstrlen(constchar*s)#include<stdio.h>intgetLength(char*s){intcnt=0;while(s[cnt]......
  • SQL 函数
    1MySQLDate函数函数描述在数据库中的存储格式now()返回当前的日期和时间curdate返回当前的日期curtime返回当前的时间date提取日期或日期/......
  • js字符串转字节stringToByte
    functionstringToByte(str){varlen,c;len=str.length;varbytes=[];for(vari=0;i<len;i++){c=str.charCodeAt(i);......
  • C# - DTO 的字符串表达
    第一阶段重写DTO的ToString()方法。利用Newtonsoft.Json序列化DTO对象。第二阶段为DTO设置基类,重写基类的ToString()方法。利用System.Text.Json序列化D......
  • 滴水3.权限控制+虚函数表
    1.头文件的引入使得结构简洁 2.私有与公共3.私有的如何访问   4.私有的优势5.类与结构区别  成员权限区别继承权限    默认继承私有6.私有是否可以被继承 ......