散列(hash):将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素。
例如,在仅出现"A"~"Z"的字符串就可以通过hash(26*26*26)将字符型数据转换为整型数据,并且数据不会发生重复。代码如下:
#include <iostream>
using namespace std;
#define MAX 5 //输入数据的数量
int getid(char *id){ //将长度为3的字符串转换为整型存储
int i_id = 0;
for(int i = 0; i < 3; i++)
i_id = 26 * i_id + (id[i] - 'A');
return i_id;
}
int main() {
//使用(散列)hash(26*26*26)将字符型数据转换为整型数据
const int maxn = 26 * 26 * 26;
int s[maxn], i_id;
char c_id[MAX][3];
for(int i = 0; i < MAX; i++){
cin >> c_id[i]; //输入字符型数据
i_id = getid(c_id[i]); //将字符型转换为整型
s[i] = i_id; //存储该整型
}
for(int i = 0; i < MAX; i++){
cout << s[i] << endl;
}
return 0;
}
输入样例:
//输入:
AAA
AAD
ABA
ABC
CDE
//输出:
0 // 0*26*26 + 0*26 + 0 'A' - 'A' = 0
3 // 0*26*26 + 0*26 + 3 'D' - 'A' = 3
26 // 0*26*26 + 1*26 + 0 'B' - 'A' = 1
28 // 0*26*26 + 1*26 + 2 'C' - 'A' = 2
1434 // 2*26*26 + 3*26 + 4 'E' - 'A' = 4
氷鸢鸢鸢
2020.2.27
来源:CSDN
作者:氷鸢鸢鸢
链接:https://blog.csdn.net/koori_145/article/details/104538123