社区
C语言
帖子详情
关于字符串到整数的映射问题.
predawning
2003-04-10 06:35:20
这个问题是这样的:
提供唯一字符串作为标识,并产生一个对应的整数.这个整数在整个数据集中也应该是唯一的.这样这个整数又可以作为数据库记录集中的索引.从而通过查找字符串完成数据库的查询.
那么有什么好的算法能够完成字符串到整数的映射呢.即生成一一对应的<字符串,整数>元组.
希望有这方面经验的人热心帮助,如有相关材料,或例子也可推荐.谢谢.
...全文
421
8
打赏
收藏
关于字符串到整数的映射问题.
这个问题是这样的: 提供唯一字符串作为标识,并产生一个对应的整数.这个整数在整个数据集中也应该是唯一的.这样这个整数又可以作为数据库记录集中的索引.从而通过查找字符串完成数据库的查询. 那么有什么好的算法能够完成字符串到整数的映射呢.即生成一一对应的元组. 希望有这方面经验的人热心帮助,如有相关材料,或例子也可推荐.谢谢.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)类可以解决问题
28个java常用的工具类源码
实战中有些代码直接套用就ok,不用动手了,会写代码的不一定是高手,但是高手一定是组织代码的老手!
将数字转换成文本的程序
将数字转换成文本, 如32转换成thirty two
python
字符串
转64位数字_python-将String转换为64位
整数
映射
字符以自定义两位值
映射
...
您将4个不同“数字”的
字符串
解释为数字,因此以4为基数.如果您有一串实际数字,范围为0-3,则可以让int()真正快速地生成一个
整数
.def seq_to_int(seq, _m=str.maketrans('ACGT', '0123')):return int(seq.translate(_m), 4)上面的函数使用str.translate()用匹配的数字替换4个字符中的每个字符(我使用静态s...
8.
字符串
转换
整数
(atoi)(JS实现)
1 题目 请你来实现一个 atoi 函数,使其能将
字符串
转换成
整数
。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号
整数
。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个
整数
。 该
字符串
在有效的
整数
部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。 注意:假如该
字符串
中的第一个非空格字符不是一
字符串
关键字的散列
映射
(25 分)
给定一系列由大写英文字母组成的
字符串
关键字和素数P,用移位法定义的散列函数H(Key)将关键字Key中的最后3个字符
映射
为
整数
,每个字符占5位;再用除留余数法将
整数
映射
到长度为P的散列表中。例如将
字符串
AZDEG插入长度为1009的散列表中,我们首先将26个大写英文字母顺序
映射
到
整数
0~25;再通过移位将其
映射
为3×322+4×32+6=3206;然后根据表长得到,即是该
字符串
的散列
映射
位置...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章