社区
C语言
帖子详情
关于字符串到整数的映射问题.
predawning
2003-04-10 06:35:20
这个问题是这样的:
提供唯一字符串作为标识,并产生一个对应的整数.这个整数在整个数据集中也应该是唯一的.这样这个整数又可以作为数据库记录集中的索引.从而通过查找字符串完成数据库的查询.
那么有什么好的算法能够完成字符串到整数的映射呢.即生成一一对应的<字符串,整数>元组.
希望有这方面经验的人热心帮助,如有相关材料,或例子也可推荐.谢谢.
...全文
373
8
打赏
收藏
关于字符串到整数的映射问题.
这个问题是这样的: 提供唯一字符串作为标识,并产生一个对应的整数.这个整数在整个数据集中也应该是唯一的.这样这个整数又可以作为数据库记录集中的索引.从而通过查找字符串完成数据库的查询. 那么有什么好的算法能够完成字符串到整数的映射呢.即生成一一对应的元组. 希望有这方面经验的人热心帮助,如有相关材料,或例子也可推荐.谢谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
predawning
2003-04-11
打赏
举报
回复
kicool(多米诺)
这个例子是个字符串到整数(正负都有)的hash函数.不知道生成的整数是否没有重复?
.
我现在还无法验证.
predawning
2003-04-11
打赏
举报
回复
hash算法我也考虑过.但是,hash出来的值可能会有重复,这不是我想要得.如果hash出来的值唯一,当然是最理想的.因为这个整数是做数据库的标识用的,所以范围不会超过长整形的最大数.
predawning
2003-04-11
打赏
举报
回复
补充一句,这个字符串说到底是路径(数据存放的位置)
kicool
2003-04-10
打赏
举报
回复
详见<<数据结构与算法-面向对象的c++设计模式>>
kicool
2003-04-10
打赏
举报
回复
#include <string>
#include <iostream>
#include <cstdlib>
using namespace std;
typedef int HashValue ;
unsigned int const shift = 6;
HashValue const mask =~0U << (sizeof(HashValue)*8-shift);
HashValue Hash(string const& s)
{
HashValue result = 0;
for(unsigned int i = 0; s[i] !=0; ++i)
result = (result & mask) ^(result <<shift)^s[i];
return result;
};
int main()
{
cout <<Hash("Hash1")<<endl;
cout <<Hash("Hash2")<<endl;
cout <<Hash("Hash33")<<endl;
cout <<Hash("Hash444")<<endl;
cout <<Hash("Hash5555")<<endl;
system("pause");
}
zhoory
2003-04-10
打赏
举报
回复
关注
zhouzhaohan
2003-04-10
打赏
举报
回复
我想这应该是找一个哈希算法。你应该把字符串的特点再说的详细一点,整数的范围有多大等等,这样才有利于找到最有效的算法。我想也许再网上搜搜,又比较经典的算法。但愿这不会变成一个高深的数学问题。
practicaldoing
2003-04-10
打赏
举报
回复
我想,用c++标准程序库中的映射(map)类可以解决问题
Python 47个
字符串
方法
# Python 47个
字符串
方法## 课程介绍同学们是否总是要搜资料、查官网后,才知道怎么操作
字符串
?如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、分割、格式化、编码、转换等
字符串
操作,带同学们系统学习 Python
字符串
方法。
字符串
关键字的散列
映射
(25 分)
给定一系列由大写英文字母组成的
字符串
关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符
映射
为
整数
,每个字符占5位;再用除留余数法将
整数
映射
到长度为P的散列表中。例如将
字符串
AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序
映射
到
整数
0~25;再通过移位将其
映射
为3×322+4×32+6=3206;然后根据表长得到,即是该
字符串
的散列
映射
位置...
7-2
字符串
关键字的散列
映射
(25 分)C语言实现
给定一系列由大写英文字母组成的
字符串
关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符
映射
为
整数
,每个字符占5位;再用除留余数法将
整数
映射
到长度为P的散列表中。例如将
字符串
AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序
映射
到
整数
0~25;再通过移位将其
映射
为3×32^2 +4×32+6=3206;然后根据表长得到,即是该
字符串
的散列
映射
位...
C++-64位
整数
-转
字符串
-16进制-
字符串
转64位
整数
文章目录1.
字符串
转无符号
整数
2.
字符串
转符号
整数
3.
整数
转
字符串
随着64位程序的日益普遍,普通的计数范围不涉及需要64位
整数
表达,但是64位的地址,却是非常普遍的,需要引起我们的注意,在使用C++时,如何将64位(有符号无符号)
整数
转
字符串
,或者64位
字符串
转为(有符号无符号)
整数
。主要使用VS下的标准库。如下所示: 1.
字符串
转无符号
整数
使用到的函数是strtoul或者strtoull:解释str指向的字节
字符串
中的无符号
整数
值。 #inlcude <stdlib.h> unsi
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章