SCU 4438 Censor (字串雜湊)
題目連結:傳送門
題意:
給定一個模式串,和一個待處理的串,這個串中的所有模式串給去掉,如果將,去掉一個模式串後形成兩個串,這兩個串拼接在一起後又形成一個新的模式串這個新的模式串也要去掉。
分析:
將處理過的串放入棧中,如果棧頂的子串是一個模式串則去掉。
程式碼如下:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e6+10;
typedef unsigned long long LL;
char str[maxn],s[maxn];
const LL HASH = 1e5+7;
int n,m;
LL multi[maxn];
LL Stack[maxn],Hash_str;
char ans[maxn];
inline bool check(int pos){
if(pos>=n){
if(Stack[pos]-Stack[pos-n]*multi[n]==Hash_str)
return true;
}
return false;
}
void init(){
multi[0]=1;
for(int i=1;i<maxn;i++)
multi[i]=multi[i-1]*HASH;
}
int main(){
init();
while(~scanf("%s%s",str,s)){
n=strlen(str);
m=strlen(s);
Hash_str=0;
for(int i=0;*(str+i);i++){
Hash_str=Hash_str*HASH + *(str+i);
}
Stack[0]=0;
int top=0;
for(int i=0;*(s+i);i++){
ans[top++]=s[i];
Stack[top]=Stack[top-1]*HASH + *(s+i);
if(check(top))
top-=n;
}
for(int i=0;i<top;i++)
printf("%c",ans[i]);
puts("");
}
return 0;
}
/***
abc
aaabcbc
b
bbb
abc
ab
***/
相關文章
- 字串雜湊字串
- 字串雜湊表字串
- 字串查詢(字串雜湊)字串
- P3370 【模板】字串雜湊字串
- js 雜湊雜湊值的模組JS
- 雜湊表(雜湊表)詳解
- 雜湊
- 【字串】 優雅的暴力——字串下的雜湊判重問題字串
- 雜湊表(雜湊表)原理詳解
- 【尋跡#3】 雜湊與雜湊表
- 查詢(3)--雜湊表(雜湊查詢)
- 樹雜湊
- 雜湊碰撞
- 雜湊表
- leetcode 1525 字串的好分割數目(雜湊表,字串分割)LeetCode字串
- 雜湊函式函式
- redis之雜湊Redis
- 雜湊連線
- 6.7雜湊表
- 安全的雜湊
- 雜湊衝突
- 異或雜湊
- 幾道和雜湊(雜湊)表有關的面試題面試題
- 雜湊遊戲之雜湊盒子的趨勢未來可期遊戲
- linux命令列印字串md5雜湊後的值Linux命令列字串
- sqlserver根據雜湊演算法生成類似uuid字串SQLServer演算法UI字串
- 雜湊技術【雜湊表】查詢演算法 PHP 版演算法PHP
- 深入理解雜湊表(JAVA和Redis雜湊表實現)JavaRedis
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- 雜湊競猜遊戲遊戲
- Redis命令——雜湊(Hash)Redis
- 雜湊表應用
- 雜湊表的原理
- 實現雜湊表
- 淺談雜湊表
- 進位制雜湊
- Swift3.0語言教程獲取字串編碼與雜湊地址Swift字串編碼
- 洛谷題單指南-集合-P3370 【模板】字串雜湊字串