博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SCU 4438 Censor(哈希+模拟栈)
阅读量:5338 次
发布时间:2019-06-15

本文共 1976 字,大约阅读时间需要 6 分钟。

 

Censor

frog is now a editor to censor so-called sensitive words (敏感词).

She has a long text \(p\). Her job is relatively simple -- just to find the first occurence of sensitive word \(w\) and remove it.

frog repeats over and over again. Help her do the tedious work.

Input

The input consists of multiple tests. For each test:

The first line contains \(1\) string \(w\). The second line contains \(1\) string \(p\).

(\(1 \leq \textrm{length of}\ w, p \leq 5 \cdot 10^6\)\(w, p\) consists of only lowercase letter)

Output

For each test, write \(1\) string which denotes the censored text.

Sample Input

abc    aaabcbc    b    bbb    abc    ab

Sample Output

a        ab
 

 

题目链接:

用哈希来做的话比KMP简单很多,每一次加入一个字符,看倒数Len个字符的哈希值是否和模式串相同,若相同则弹出Len个元素,否则再加入元素并更新哈希值

代码:

#include 
#include
using namespace std;#define INF 0x3f3f3f3f#define LC(x) (x<<1)#define RC(x) ((x<<1)+1)#define MID(x,y) ((x+y)>>1)#define CLR(arr,val) memset(arr,val,sizeof(arr))#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);typedef pair
pii;typedef unsigned long long ULL;const double PI = acos(-1.0);const int N = 5e6 + 7;const ULL seed = 1e9 + 7;char w[N], p[N], ans[N];int lw, lp;ULL prefix[N] = {1ull}, st[N];ULL gethash(char s[], int len){ ULL hashval = 0ull; for (int i = 0; i < len; ++i) hashval = hashval * seed + s[i]; return hashval;}int main(void){ int i; for (i = 1; i < N; ++i) prefix[i] = prefix[i - 1] * seed; while (~scanf("%s%s", w, p)) { lw = strlen(w); lp = strlen(p); ULL tar = gethash(w, lw); int top = 0; st[top] = 0; for (i = 0; i < lp; ++i) { ans[top++] = p[i]; st[top] = st[top - 1] * seed + p[i]; if (top >= lw && st[top] - st[top - lw]*prefix[lw] == tar) top -= lw; } ans[top] = '\0'; printf("%s\n", ans); } return 0;}

转载于:https://www.cnblogs.com/Blackops/p/6661562.html

你可能感兴趣的文章
继承(一)
查看>>
【NOIP模拟】花花森林
查看>>
copy和mutableCopy
查看>>
这是我的第一篇播客,多多指教
查看>>
C语言编程经典100例
查看>>
Python3——根据m3u8下载视频(上)之urllib.request
查看>>
使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(四)-- Middleware
查看>>
Java实现快速排序
查看>>
小程序的生命周期
查看>>
linux之 文本编辑 的基础知识点
查看>>
Android系统下,用adb实现自动获取应用性能数据
查看>>
微信小程序采坑之scroll-view
查看>>
Codeforces Round #532 (Div. 2)
查看>>
Linux基础命令和NAT技术
查看>>
在Outlook中修改脱机文件(.ost)的保存位置
查看>>
Shell命令-内置命令及其它之echo、printf
查看>>
hdu 5120 Intersection 两个圆的面积交
查看>>
Spring<bean>标签是反射来实现的
查看>>
[小巩u3d] 关于Raycast对BoxCollider和BoxCollider2d的碰撞监测规则
查看>>
bzoj 4197: [Noi2015]寿司晚宴
查看>>