题目链接:Censor

题目大意:给你一个模式串和原串,现在要你去删除原串中出现的第一个模式串,然后在删除的原串中继续这种操作,直到找不到原串为止,输出最后的字符串

题目思路:首先字符串匹配,我们可以想到使用KMP,然后我们需要在KMP的思路上做一些操作,当匹配到一个完整的字符串时,我们需要将j指针移动到上一个没有匹配到的位置,然后进行继续的,然后我们可以用一个ans数组保存串,有删除的时候我们直接将left-l1就好,相当于删除了字符串

#include <bits/stdc++.h>using namespace std;
const int maxn = 5e6+10;int n,Next[maxn],fro[maxn];
char mo[maxn],str[maxn],ans[maxn];void getNext(){int i = 0,j = -1,len = strlen(mo);while(i < len){if(j == -1||mo[i] == mo[j]) Next[++i] = ++j;else j = Next[j];}
}void kmp(){int i = 0,j = 0,left = 0;int l1 = strlen(mo);int l2 = strlen(str);while(i < l2){ans[left] = str[i];if(j == -1||mo[j] == str[i]){i++;j++;left++;fro[left] = j;}else j = Next[j];if(j == l1){left -= l1;j = fro[left];}}for(int i=0;i<left;i++)printf("%c",ans[i]);printf("\n");
}int main(){int n,m,k;while(~scanf("%s%s",mo,str)){Next[0] = -1;getNext();kmp();}return 0;
}

scuoj 4438 Censor相关推荐

  1. 【哈希-字符串匹配+模拟栈】SCU - 4438: Censor(哈希详解哈哈哈)

    写在前:由于哈希没有好好听讲,也没有下来看.这是排位我开的第一道题,直接string暴力T了.昨天其实就看了哈希,太浮躁,于是本来很简单的哈希愣是没看懂.(于是放弃去看爱5了23333333)今天补上 ...

  2. ACM: SCU 4438 Censor - KMP

    SCU 4438 Censor Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Practice Des ...

  3. SCU - 4438 Censor

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...

  4. SCU - 4438 Censor

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...

  5. SCU - 4438 Censor (KMP)

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...

  6. SCU - 4438——Censor(哈希)

    题目链接:http://acm.scu.edu.cn/soj/problem.action?id=4438 题意:给出一个串a和串b,串b中如果有a串则删除,删除后b剩下的串再连到一起,再找串a,反复 ...

  7. SCU 4438:Censor

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...

  8. SCU 4438 Censor

    $KMP$,链表. 将$p$弄成链表,每次匹配到,删掉中间的,继续匹配. #include<bits/stdc++.h> using namespace std;const int INF ...

  9. SCU 4438 Censor (KMP)

    题目大意: 就是现在给出两个字符串A, B, 长度都不超过500万, 要求每次将B中第一次A的出现删除, 然后将B剩下的两段前后合并, 然后重复这个过程直到没有可以删除的A位置, 问最后剩下的串是什么 ...

最新文章

  1. Flume的安装与配置
  2. python怎么解释语言_python属于解释语言吗
  3. boost::compose_property_map相关的测试程序
  4. JavaScript中this的指向问题
  5. HTMLCSS课堂笔记
  6. 新手上路之django项目开发(二)-----引入静态文件
  7. 【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
  8. 信阳农林技术学院经纬度_信阳无人机创业团队:让梦想在田野起飞
  9. java util 中set,List 和Map的使用
  10. oracle日期虚数0去掉,第 14 章 使用复数运算库
  11. python调用adb shell命令_python(或BAT脚本)自动执行adb shell以后的命令
  12. 《皇帝新脑》读书笔记(一)
  13. 飞机大战java_Java飞机大战
  14. MATLAB的bertool绘制误码率理论值与仿真值对比曲线
  15. C# dataGridView限制某一行的单元格只输入数字的方法之一
  16. 为什么现在大多数服务器使用linux系统区别的一些总结
  17. 10年测试经验,在35岁的生理年龄面前,一文不值
  18. 中秋福利PK!2017公司月饼哪家强?腾讯、阿里、百度、京东、网易等21家中秋月饼盘点!(完整版)
  19. 在Web3赚钱,你准备好了吗?
  20. php 12306余票查询,PHP火车余票查询的API,12306官方的API

热门文章

  1. translate-shell的使用方法
  2. c语言 图片漫画效果,picsart怎么把图片变成漫画效果
  3. 小米路由器Pro R3p 刷机 Breed Padavan OpenWrt UART/TTL 救援
  4. smart license简单使用感想
  5. 平安科技面试经验分享
  6. Candence Virtuoso进行基本的电路设计
  7. 已解决SyntaxError: positional argument follows keyword argument
  8. 计算机的CPU型号 内存容量和硬盘容量,什么是LGA,PGA,BGA类型的CPU封装?CPU主频/内存容量/硬盘容量怎么看?...
  9. 《C#零基础入门之百识百例》(二十八)交错数组 -- foreach求和
  10. 短视频脚本如何创作?了解构成部分很关键,按顺序做不会错