雜湊演算法》入門篇

2021-10-02 11:48:15 字數 910 閱讀 5517

兩段字串,判斷它們是否相等,樸素解法是乙個乙個的判斷,時間復制度較大。雜湊演算法把字串轉換成整數,這樣時間複雜度從o(n)變成了o(1)。類似於二進位制,用p進製將字串裝換成整數,為避免重複,一般認為p取131或者1331,使用unsigned long long 就可以,預設對結果模乙個2^64,會有溢位的情況,但影響很小。(字串預設都是小寫字母,採用26進製)

例如 str=「abcd"

hash陣列儲存字串所有的字首(憨憨小白不會打次方:p)

這裡還可以用到簡單的遞迴

hash[i]=hash[i-1]*p+s[i]-『a』+1

對於字串任意區間(l,r)

hash[l–r]=hash[r]-hash[l-1]*p^(r-l+1)

簡單驗證即可得到

例題鏈結

**實現

#include

#include

#define base 131

char s[

1000000];

typedef

unsigned

long

long ull;

ull h[

1000001

],p[

1000001];

ull ans

(int left,

int right)

intmain()

while

(n--

)}

KMP演算法 入門篇

字串匹配問題 給出乙個源字串和乙個目標字串,能否在源串中找到匹配目標串的子串,找到的話就返回首字母在源串的下標 暴力匹配演算法 bf演算法 相對於烤饃片 kmp 演算法,暴力演算法是最簡單易懂的,就是從前向後遍歷源串的每乙個字母向後檢視以該字母的子串,當且僅當起點字母後面的每個字母都匹配成功則返回該...

演算法 入門篇(歐式距離)

計算公式 本文將根據使用者輸入特徵的資料模型,對歐式距離的應用進行簡單的介紹。總思路 根據使用者的歷史登入的輸入特徵,建立 圓形 的資料模型,取落入此圓內的資料,作為正常值,落到圓外部的資料將被判定為風險資料。public boolean doeval double inputfeatures,li...

演算法 入門篇(球面距離)

數學模型 計算公式 l r arc cos cos wa cos wb cos jb ja sin wa sin wb 補充 球面距離在開發中一般用在,地理位置的位移量計算中。本文將根據風控系統中,使用者登入的位移量評估簡單介紹此演算法的使用。一般的,我們再日誌中,可以獲取客戶端的登入ip,根據ip...