字串查詢(字串雜湊)
這是一道模板題。
給定一個字串 A 和一個字串 B ,求 B在 A 中的出現次數。 A和 B中的字元均為英語大寫字母或小寫字母。
A中不同位置出現的 B可重疊。
輸入格式
輸入共兩行,分別是字串 A和字串 B。
輸出格式
輸出一個整數,表示 B在 A中的出現次數。
樣例輸入
zyzyzyz
zyz
樣例輸出
3
資料範圍與提示
1<= A,B的長度<=10^6 ,A、 B僅包含大小寫字母。
字串雜湊模板提
#include<stdio.h>
#include<string.h>
#include<algorithm>
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的子串的雜湊值
{
return f[y]-f[x-1]*a[y-x+1];
}
int main()
{
int i,j;
a[0]=1;
for(i=1; i<=1000000; ++i) //先遍歷出 a^n
a[i]=a[i-1]*K;
int sum=0;
t=0;
scanf("%s%s",s1+1,s2+1); //從下標 1開始存
l1=strlen(s1+1);
l2=strlen(s2+1);
for(j=1; j<=l1; j++)
f[j]=f[j-1]*K+(s1[j]-'A'+1); //計算主串的滾動雜湊值
for(j=1; j<=l2; j++)
t=t*K+(s2[j]-'A'+1); //計算匹配串的雜湊值
for(j=1;j+l2-1<=l1; ++j)
{
if(find(j,j+l2-1)==t) //判斷兩串是否相同
sum++;
}
printf("%d\n",sum);
return 0;
}
相關文章
- 字串雜湊字串
- 字串雜湊表字串
- leetcode 1525 字串的好分割數目(雜湊表,字串分割)LeetCode字串
- 【字串】 優雅的暴力——字串下的雜湊判重問題字串
- 雜湊查詢 兩數之和
- 雜湊查詢演算法演算法
- linux下查詢字串Linux字串
- 雜湊技術【雜湊表】查詢演算法 PHP 版演算法PHP
- 查詢演算法及雜湊表演算法
- python怎麼查詢字串中是否包含某個字串Python字串
- 子字串查詢演算法字串演算法
- MySQL 查詢字串的個數MySql字串
- 淺談最長迴文子串求法——字串雜湊字串
- 【PHP資料結構】雜湊表查詢PHP資料結構
- Elasticsearch 複合查詢——多字串多欄位查詢Elasticsearch字串
- sqlserver根據雜湊演算法生成類似uuid字串SQLServer演算法UI字串
- 洛谷題單指南-集合-P3370 【模板】字串雜湊字串
- MySQL字串轉時間戳查詢MySql字串時間戳
- mysql拆分字串做條件查詢MySql字串
- Elasticsearch 單字串多欄位查詢Elasticsearch字串
- JS字串最長迴文查詢JS字串
- Linuxvivim查詢和替換字串命令Linux字串
- ES6語法學習之字串模板及字串查詢字串
- CF 2010 C2. Message Transmission Error (hard version) (*1700) 字串+雜湊Error字串
- C#根據雜湊演算法生成類似uuid字串C#演算法UI字串
- mysql 如何查詢逗號“,”分割的字串MySql字串
- c++字串查詢函式實現C++字串函式
- Python字串string的查詢和替換Python字串
- PHP 查詢、擷取字串函式詳解PHP字串函式
- Python查詢包含指定字串的所有Office文件Python字串
- Python查詢包含指定字串的所有檔案Python字串
- UILabel模糊查詢符合的字串並且高亮UI字串
- 第二章 :查詢與排序-------2.18題目講解_在有空字串中的有序字串陣列中查詢排序字串陣列
- LeetCode1002. 查詢常用字元(雜湊表、count)LeetCode字元
- 【資料結構】查詢結構(二叉排序樹、ALV樹、雜湊技術雜湊表)資料結構排序
- mysql 查詢,字串帶著空格也能匹配上MySql字串
- 複雜查詢—子查詢
- Hash,雜湊,雜湊?