字串hash初步(待補充高階部分12 1)

2021-08-22 19:10:57 字數 1004 閱讀 2399

如果key不是整數,設計雜湊函式:

例子題目:

如何將乙個二維整點p的座標對映為乙個整數,使得整點p可以由該整數唯一地代表

假設乙個整點p的座標是(x,y),其中0<=x,y<=range

那麼可以令hash函式為h(p)=x*range+y

這樣對資料範圍內的任意兩個整點p1,p2,

h(p1)都不會等於h(p2)

就可以用h(p)來唯一地代表該整點p

接著可以通過證書hash的方法來進一步對映到較小的範圍

字串hash是將乙個字串s對映成乙個整數,

使得該整數可以盡可能唯一地代表字串s

先討論(將字串轉換為唯一的整數)

int hashfunc(char s,int len)

return id;

}

而如果出現了數字,一般有兩種處理方法

①按照小寫字母的處理方法,增大進製至62

②如果保證在字串的末尾是確定個數的數字

那麼就可以把前面英文本母的部分按上面的思路轉換成整數

再將末尾的數字直接拼接上去

例如對由三個字元加一位數字組成的字串「bcd4」來說

就可以先將前面的「bcd」轉化為整數731

然後直接拼接上末尾的4變成7314即可

int hashfunc(char s,int len)

{ int id=0;

for(int i=0;i乙個問題:

給出n個字串(由恰好三位大寫字母組成),再給出m個查詢字串

問每個查詢字串在n個字串中出現的次數

#include#define maxn 100

char s[maxn][5],temp[5];

int hashtable[26*26*26+10];

int hashfunc(char s,int len)

{ int id=0;

for(int i=0;i知識點來自於《演算法筆記》

Hash 字串 字串雜湊

luo gu luogu luogup 3370 p3370 p337 0如題,給定n個字串 第i個字串長度為mi,字串內包含數字 大小寫字母 請求出n個字串中共有多少個不同的字串。第一行包含乙個整數n,為字串的個數。接下來n行每行包含乙個字串,為所提供的字串。輸出包含一行,包含乙個整數,為不同的字...

字串初步

字串在qbasic中,是一種型別。而在c 裡面,則一般不用這種型別來完成字串的操作,而是通過字元陣列來完成字串的操作 c 裡面的string型別處理速度較慢 字元型別我們以前就已經學習過了,是char型別。而字元陣列就是類似這樣定義的陣列 char s 100 通過這樣的定義,我們就可以通過 cin...

python 高階函式 字串的補充

變數可以指向函式,函式的引數可以接收變數,那麼函式可以接收另乙個函式作為引數,這種函式稱為高階函式 1 函式本身也可以賦值給變數 變數可以指向函式 print abs 11 abs函式 求絕對值 f abs print f 10 2 傳遞的引數包含函式名 def fun x,y,f return f...