字符串哈希
来源:互联网 发布:个人网站博客系统php 编辑:程序博客网 时间:2024/06/05 15:40
参照算法笔记P109,甲级1039
先假设字符串均由大写字母A~Z构成。在这个基础上,不妨把A~Z视为0~25,这样就把26个大写字母对应到了26进制中。接着,按照将26进制转化为10进制的思路,由进制的转换结论可知,在进制转换过程中,得到的10进制肯定是唯一的,由此便可实现将字符串映射为整数的需求(注意:转换成的最大整数位(int)(pow(26,len)-1),len为字符串长度)
int hash(char s[],int len){int id=0,i;for(i=0;i<len;i++){id=id*26+(s[i]-'A');}return id;}
//如果有小写字母,则把a~z作为26~51
int hash(char s[],int len){int id=0,i;for(i=0;i<len;i++){if(s[i]>='A'&&s[i]<='Z'){id=id*52+(s[i]-'A');} else if(s[i]>='a'&&s[i]<='z'){id=id*52+(s[i]-'a')+26;}}return id;}
//如果出现数字,一般有2种方法:
1.按照小写字母的处理方法,增大进制数至62。
2.如果保证在字符串的末尾是确定个数的数字,那么就可以把前面的英文字母的部分按
上面的思路转换成整数,再将末尾的数字直接拼上去。例如对由3个字符加一位数字组成的
字符串"BCD4" ,就可以将前面的"BCD"转换成731,然后直接拼上末位的4变为7314。
int hash(char s[],int len){int id=0,i;for(i=0;i<len-1;i++){id=id*26+(s[i]-'A');}id=id*10+(s[len-1]-'0');return id;}
阅读全文
0 0
- FZU 2137 奇异字符串 字符串哈希
- 字符串哈希函数
- 字符串哈希
- 字符串哈希函数
- 字符串哈希函数
- 生成哈希字符串
- 字符串哈希函数
- 字符串哈希函数
- hdu2920 字符串哈希
- 字符串哈希算法
- POJ3461 字符串哈希
- 字符串哈希函数
- 字符串哈希函数
- 字符串哈希函数
- hdu4821 字符串哈希
- 字符串哈希函数
- 字符串哈希函数
- 字符串哈希函数
- [YTU]_2918( Shape系列-4)
- Entrance Pupil AND Exit Pupil
- 理解TIME_WAIT
- 听说你精通TCP,来问你几个问题考考你是不是真的精通
- druid监控配置及sql注入防火墙配置
- 字符串哈希
- WEB服务器与应用服务器的区别
- arduino等开源平台
- [leetCode刷题笔记]606. Construct String from Binary Tree
- Eclipse Java注释模板设置详解
- stylus使用再升级
- cesium 3D tiles源码安装
- vert.x笔记:1.vert.x介绍
- PID 参数整定口诀