字串查詢(字串雜湊)

2021-10-10 10:26:37 字數 906 閱讀 4173

這是一道模板題。

給定乙個字串 a 和乙個字串 b ,求 b在 a 中的出現次數。 a和 b中的字元均為英語大寫字母或小寫字母。

a中不同位置出現的 b可重疊。

輸入格式

輸入共兩行,分別是字串 a和字串 b。

輸出格式

輸出乙個整數,表示 b在 a中的出現次數。

樣例輸入

zyzyzyz

zyz

樣例輸出

資料範圍與提示

1<= a,b的長度<=10^6 ,a、 b僅包含大小寫字母。

字串雜湊模板提

#include

#include

#include

using

namespace std;

#define k 131

#define ull unsigned long long

int n;

char s1[

1000010

], s2[

1000010];

ull a[

1000010

],f[

1000010

],l1,l2,t;

ull find

(int x,

int y)

//計算下標 x到 y的子串的雜湊值

intmain()

printf

("%d\n"

,sum)

;return0;

}

雜湊查詢字串

雜湊查詢的優越性 當查詢的字串長度小於機器字長時,可以把字串當做 long 進行比較。由於移位操作相當快 乙個時鐘週期 所以執行操作花費的時間比較少。這種查詢辦法通用性不好。big endian or little endian 問題 但不可否認,它的查詢速度確實快。csdn 的查詢演算法 思路是 ...

查詢字串

在乙個主串中查詢相應的子串,如 abcdwoshidef 中查詢 woshi 方法 該實現的方法是最簡單的模式匹配方法,時間複雜度較高 include iostream using namespace std int searchstring const char str1,const char s...

查詢字串

qstring startwith 判斷乙個字串是否以某個字串開頭,引數 字串,大小寫敏感 qstring str welcome to you str.startswith welcome qt casesensitive 返回true str.startswith you qt casesens...