字元雜湊基礎知識

2022-05-01 17:57:11 字數 814 閱讀 7438

定義:字串雜湊,最著名的就是bkdrhash,也就是將字串變成數值,並且最後變成的數值是乙個p進製的數,一般來說p最好為素數.p常見的是131和13331,這是兩個經驗值,出錯率極低。

str[i]字元陣列

h[i]存str[1...i]的雜湊值

p[i]存base的i次冪的值

如果h[i]和p[i]取unsiged long long那麼相當於是對2的64次冪取模降低了運算複雜度

初始化p和h陣列

這個函式是取字串任意一段的雜湊值,如字串aabaabaab,則get(1,3)=get(4,6)=get(7,9);

雜湊是乙個很高效的演算法,具有很大的實用性,筆試競賽必備!

#include#include

#include

using

namespace

std;

#define ull unsigned long long

const

intbase=131

;ull p[

1000010],h[1000010

];char str[1000010

];ull

get(ull l,ull r)

intmain()

return0;

}

Hash 雜湊 雜湊 基礎知識梳理

字典的兩種描述方法 跳表和雜湊 hash 限制適用範圍 有序陣列 採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續的儲存空間愛你被稱為雜湊表或者雜湊表。雜湊技術是在記錄的儲存位置和他的關鍵字之間建立乙個確定的對應關係f 雜湊函式 使得每個關鍵字key對應乙個儲存位置f key 根據這個對應關係...

雜湊表基礎知識 2

在雜湊表基礎知識 1 中,我們介紹了分離鏈結法來解決雜湊衝突。它的乙個缺陷就是需要經常的分配動態記憶體,這是比較花費時間的。本文再介紹解決雜湊表的另外一種方法開放定址法。不需要動態多次的動態分配記憶體。開放定址法是運用乙個陣列,所有的資料都需要放入這個陣列中,如果發生雜湊衝突,我們通過乙個函式 f ...

字元陣列基礎知識

char型的陣列稱為字元陣列,通常用來儲存字串。用雙引號內的字串初始化字元陣列 char arr hello world char arr 100 char arr 100 hello world 用字元常量初始化字元陣列,需要自己新增字串結束符 char arr 100 strcpy函式的實現方法...