1. 程式人生 > >一維字串hash模板

一維字串hash模板

#include<bits/stdc++.h>
#define LL long long
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f
#define ULL unsigned long long
using namespace std;
const int maxn = 120000+50;
string s[maxn];
int H_head[maxn];
int H_next[maxn];
int H_rear;
string word[maxn];
void init()
{
    memset(H_head,-1,sizeof(H_head));
    memset(H_next,-1,sizeof(H_next));
    H_rear = 0;
}
int Hash(string s)
{
    int ret = 0;
    for(int i = 0;i<s.size();i++){
        ret = ret * 131 + s[i];
    }
    return (ret & 0x7fffffff) % 111117;//小於長度的最大素數
}
int add(string s)
{
    int h = Hash(s);
    for(int i = H_head[h] ; ~i ; i = H_next[i]){
        if(word[i]==s) return 0;
    }
    word[H_rear] = s;
    H_next[H_rear] = H_head[h];
    H_head[h] = H_rear++;
    return 0;
}
int query(string s)
{
     int h = Hash(s);
    for(int i = H_head[h] ; ~i ; i = H_next[i]){
        if(word[i]==s) return 1;
    }
    return 0;
}


相關推薦

字串hash模板

#include<bits/stdc++.h> #define LL long long #define INF 0x3f3f3f3f #define INFLL 0x3f3f3f3f3f

字串Hash模板

博主連結 #include<stdio.h> #include<bits/stdc++.h> #define ll long long int using namespace std; ll gethash(char *s,int m){

字串雜湊[hash模板]

有這麼一類神奇的問題,給你一堆字串,然後問你有多少本質不同的字串 ~~ 或許有頭鐵的同志可以開一個map ~~ 所以有了hash大法 大致思想 我們判斷兩個字串相等,無非就是判斷他們每一位是不是相等,但是如果讓你判斷兩個數字是不是相等,是不是就簡單了許多呢?

陣列、二陣列、字串總結

首先讓我們看看一維陣列 一維陣列主要在高精度計算上,所謂高精度計算,也就是模擬計算過程,然後就沒有什麼了…… 然後是二維陣列 二維陣列就是座標系,難點在座標的變化上: //1順時針旋轉90度 fo

js將字串轉換為陣列

在Js程式設計中,有時候需要將一個字串轉換為一維陣列或者是二維陣列,現在分享給大家我自己把字串轉換為陣列的方法。 直接上原始碼:   <script type="text/javascript">   //這是需要轉換的字串     var scoreStr =

字串Hash總結模板

字串匹配      感覺用字串hash 可以水過很多字串匹配的問題,(KMP太頭疼了) 實現方法:     計運算元串的hash值,在長串中從第一位開始,往後延伸到和子串同樣長度,然後算出這段字元的hash值,看是否和子串的hash值相等。 題目連結        

字串系列()——偉大的字串Hash

在刷省選時,我們時常會遇到一些字串的題目。也有許多的演算法供我們選擇,如:KMP、拓展KMP、最小表示法、Manacher、Trie、字尾陣列、字尾自動機、AC自動機(樹上KMP)等等等,日後我會逐一填坑。今天先來介紹一個最暴力且用途最大的——字串Hash。首先,要想學好Ha

C#呼叫C++ 平臺呼叫P/Invoke 結構體--含有內建資料型別的、二陣列、字串指標【六】

【1】結構體中含有內建資料型別的一維陣列 C++程式碼: typedef struct _testStru3 { int iValArrp[30]; WCHAR szChArr[30];

每日題之 騰訊演算法崗筆試題 (字串Hash

####描述 給定A,B兩個字串,定義如下規則 對於每一個A的長度為k的不同子串,統計子串在B中出現的次數 A和B的字串係數就是所有出現次數之和。 如 A=“abab“ B = “ababab“ k

字串hash補充(快速冪模板

題目: 字串的雜湊就是通過某些對映關係,將字串對映到數字上去方便進行比較。 比如二進位制數110110,我們知道這個數的十進位制是 54 基於同樣思路,我們可以定義這樣的一個雜湊函式: 雜湊函式

PHP[多陣列轉字串]和{多陣列轉陣列}

/** * @method 多維陣列轉字串 * @param type $array * @return type $srting * @author yanhuixian */ function arrayToString($arr) { if (is_array($ar

線段樹模板題(結構體&陣列)(區間最值,求和)

1099: [視訊]線段樹(元問題byscy)線性結構求極值和修改 時間限制: 1 Sec 記憶體限制: 128 MB 提交: 496 解決: 165 [提交][狀態][討論版] 題目描述 【題意】 給出N個數,兩種操作: 1、C x y:修改

php對陣列字串和數字進行排序

//Example for sorting by values for an alphanumeric array also having case-sensitive data $exampleArray1 = $exampleArray2 = arr

字串轉化為、二陣列

package testJava815; import java.io.ObjectInputStream.GetField; public class TestArray {private static String[] getRequiredPhotos() {retu

陣列,二陣列,字串陣列,指標的有關知識點整理

到今天為止算是正式把陣列,字串,以及指標這一塊初步複習了一遍。 下面是有關知識點總結: int array[2]={1,2};//一維陣列 array:一維陣列的地址,同時也是一維陣列首元素的地址* array+i :一維陣列第i+1個元素的地址 *array:一維

cf244D. Match & Catch 字串hash模板)或 字尾陣列。。。

可以用各種方法做,字串hash,字尾陣列,dp,拓展kmp,字典樹。。。 字串hash(模板) BKDR Hash Function : // BKDR Hash Function unsigned int BKDRHash(char *str) {

[Vue原始碼]起來學Vue模板編譯原理(二)-AST生成Render字串

本文我們一起通過學習Vue模板編譯原理(二)-AST生成Render字串來分析Vue原始碼。預計接下來會圍繞Vue原始碼來整理一些文章,如下。 一起來學Vue雙向繫結原理-資料劫持和釋出訂閱 一起來學Vue模板編譯原理(一)-Template生成AST 一起來學Vue模板編譯原理(二)-AST生成Rende

會超時的dfs01背包+快一點的DP01背包

iostream return end ret ostream .cn img nbsp style ( ⊙ o ⊙ ) 題目: (⊙v⊙),代碼: 1.dfs //會超時!!!! #include<iostream> #include

JAVA:數組

取數 使用 引用類型 spa 分配內存 ever () 最小 tint 1 /* 2 數組:存儲同一種數據類型的多個元素的容器。 3 4 定義格式: 5 A:數據類型[] 數組名; 6 B:數據類型 數

指針與數組和二數組以及字符串指針數組的學習筆記

個人 alt sizeof mage .com size 關系 指向 應該 廢話不多少,直接上代碼,關鍵的東西已經註釋了,看註釋信息理解即可。 說明:本程序討論了一維數組和指針的關系,談論了二維數組和指針之間的關系,討論了字符串數組指針數組和指針之間的關系,代碼中以給出定義