面試題 雜湊法及雜湊表的應用

2021-10-06 05:10:30 字數 1673 閱讀 5668

雜湊表雜湊法又稱雜湊法、關鍵字位址計算法等,相應的表成為雜湊表。

雜湊法的基本思想:首先在元素的關鍵字k和元素的位置p之間建立乙個對應關係f,使得p=f(k),其中f稱為雜湊函式。

建立雜湊表時,把關鍵字k的元素直接存入位址為f(k)的單元;查詢關鍵字k的元素利用雜湊函式計算出該元素的儲存位置p=f(k)

當關鍵字集合很大時,關鍵字值不同的元素可能會對映到雜湊表的同一位址上,即k1 != k2,但f(k1)=f(k2),這種現象稱為hash衝突,實際中衝突是不可避免的,只能通過改進雜湊函式的效能來減少衝突。

常見處理衝突的方法:

雜湊表(hash table,也叫雜湊表),是根據鍵(key)而直接訪問在記憶體儲存位置的資料結構。也就是說,它通過計算乙個關於鍵值的函式,將所需查詢的資料對映到表中乙個位置來訪問記錄,這加快了查詢速度。這個對映函式稱做雜湊函式,存放記錄的陣列稱做雜湊表。

雜湊表是使用 o(1)時間進行資料的插入刪除和查詢,但是雜湊表不保證表中資料的有序性,這樣在雜湊表中查詢最大資料或者最小資料的時間是 o(n) 實現。

單詞頻率:設計乙個方法,找出任意指定單詞在一本書中的出現頻率。

你的實現應該支援如下操作:

class

wordsfrequency

}

int get

(string word)

private

: map res;};

/** * your wordsfrequency object will be instantiated and called as such:

* wordsfrequency* obj = new wordsfrequency(book);

* int param_1 = obj->get(word);

*/

回文排列:給定乙個字串,編寫乙個函式判定其是否為某個回文串的排列之一。

回文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。回文串不一定是字典當中的單詞。

)//依次判斷是否只出現奇數次或偶數次

int count =0;

for(int i=

0; i<

128; i++)if

(count ==

1|| count ==0)

return

false;}

};變位片語:編寫一種方法,對字串陣列進行排序,將所有變位片語合在一起。變位詞是指字母相同,但排列不同的字串。

//根據關鍵字輸出所有變位詞

for(auto m : map1)

res.

push_back

(words);}

return res;}}

;

google雜湊面試題

題目 在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b。用雜湊表解題 分析 這道題是2006年google的一道筆試題。解 由於字元 char 是乙個長度為8的資料型別,因此總共有可能256 種可能。於是我們建立乙個長度為256的陣列,每個字母根據其ascii碼值作為陣列的...

面試題 vector map 紅黑樹 雜湊表

vector的資料安排以及操作方式,與array非常相似。兩者的唯一區別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變 vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。因此,vector的運用對於記憶體的合理利用與運用的靈活性有很大的幫助。vect...

雜湊表應用(鏈位址法)

最近專案中碰到這麼乙個問題。opc客戶端中存在已知點名的20000個點,其中點名是由字母和數字組成,比如pn110,pn112,pn113,pn114.pn200.pn900.將dcs伺服器中的20000個點加到opc客戶端中。如果遇到相同的點名,就不加入,不相同就加入。比如dcs伺服器中有點pn1...