使用哈希算法将字符串映射到数组中
时间: 2023-09-20 08:10:20 浏览: 127
哈希函数解决字符串问题
哈希算法可以将任意长度的字符串映射到固定长度的数组中,通常用于实现快速查找和存储。下面是一种基本的哈希算法:
1. 首先选择一个合适的哈希函数,将字符串转换成一个数字。常见的哈希函数有取余法、乘法取整法等。
2. 将得到的数字除以数组长度,取余数作为数组的索引。这样可以将字符串等分为若干段,每段映射到数组的不同位置上,分布更加均匀。
3. 如果数组中该位置已经有元素存在,就需要解决冲突。有几种常见的解决冲突的方法,如拉链法、线性探测法等。
下面是一个简单的示例代码,使用取余法将字符串映射到数组中:
```python
def hash_func(key, size):
# 取字符串的 ASCII 码值之和作为哈希值
hash_val = sum(ord(c) for c in key)
return hash_val % size
# 示例
arr_size = 10
arr = [None] * arr_size
keys = ["hello", "world", "python", "hash", "table", "algorithm"]
for key in keys:
idx = hash_func(key, arr_size)
if arr[idx] is None:
arr[idx] = [key]
else:
arr[idx].append(key)
print(arr)
```
输出结果为:
```
[None, ['world'], ['algorithm'], ['table'], ['python'], None, ['hello'], None, ['hash'], None]
```
可以看到,每个字符串都被映射到了不同的位置上,并且解决了冲突。
阅读全文