题目是说给你一个替换串和目标串。把一个长串中的所有的替换串替换为目标串而且不递归地替换。

很简单,直接做一次KMP然后直接替换。

注意替换后跳到替换串的尾部。

注意大小写的问题。

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 50550
using namespace std; char s0[],s1[],s[maxn];
int f[],L;
bool tag[maxn];
int n,m; bool equal(char c1,char c2)
{
if (c1==c2) return true;
if (c1>c2) swap(c1,c2);
c1=c1-'A'+'a';
if (c1==c2) return true;
return false;
} void getfail()
{
memset(f,,sizeof f);
f[]=;
for (int i=; s0[i]; i++)
{
int k=f[i-];
while (k && equal(s0[k+],s0[i])==false) k=f[k];
if (equal(s0[k+],s0[i])) f[i]=k+;
else f[i]=;
}
} void trans(char ss[])
{
for (int i=; ss[i]; i++)
{
if (ss[i]>='A' && ss[i]<='Z') ss[i]=ss[i]-'A'+'a';
}
} int main()
{
while (gets(s0+))
{
gets(s1+),gets(s+);
getfail();
L=strlen(s0+);
memset(tag,false,sizeof tag);
int cur=;
for (int i=; s[i]; i++)
{
if (equal(s0[cur+],s[i])) cur++;
else
{
int k=f[cur];
while (k && equal(s0[k+],s[i])==false) k=f[k];
if (equal(s0[k+],s[i])) cur=k+;
else cur=;
}
if (cur==L)
{
tag[i]=true;
cur=;
}
}
for (int i=; s[i]; i++)
{
if (tag[i+L-]==true)
{
printf("%s",s1+);
i=i+L-;
}
else printf("%c",s[i]);
}
printf("\n");
}
return ;
}

FZU2122_又见LKity的更多相关文章

  1. FZU 2122 ——又见LKity——————【KMP字符串匹配】

    Problem 2122 又见LKity Accept: 413    Submit: 1425Time Limit: 1000 mSec    Memory Limit : 32768 KB  Pr ...

  2. FZU 2122——又见LKity——————【字符串匹配、暴力】

    Problem 2122 又见LKity Accept: 407    Submit: 1413Time Limit: 1000 mSec    Memory Limit : 32768 KB  Pr ...

  3. hust训练赛20160330--B - 又见LKity

    Problem 2122 又见LKity Time Limit: 1000 mSec Memory Limit : 32768 KB  Problem Description 嗨!大家好,在Templ ...

  4. FZU 2122 又见LKity【字符串/正难则反/KMP/把一个字符串中某个部分替换为另一个部分】

    嗨!大家好,在TempleRun中大家都认识我了吧.我是又笨又穷的猫猫LKity.很高兴这次又与各位FZU的ACMer见面了.最近见到FZU的各位ACMer都在刻苦地集训,整天在日光浴中闲得发慌的我压 ...

  5. FZU 2122 又见LKity

    直接模拟或者KMP #include <iostream> #include <string.h> #include <stdio.h> #include < ...

  6. FZU 2122 又见LKity(KMP+返回所有匹配位置)

    基础kmp应用,找到所有匹配位置即可 #include<stdio.h> #include<string.h> #include<algorithm> #inclu ...

  7. Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果

    Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果 前言: 每次写之前都会来一段(废)话.{心塞...} Google Play首页两个tab背景 ...

  8. 你可曾见过如此简单粗暴的JavaScript解说 -- if 判断的正确打开方式?

    在JavaScript中,对于 if else 的逻辑判断你肯定非常熟悉,本文罗列了几种你不一定知道的简写方式,仅供参考. 例子: 已知小明考了68分,小于60分为不及格,大于60分为及格,问:小明是 ...

  9. Java正则速成秘籍(三)之见招拆招篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

随机推荐

  1. 【LG3238】 [HNOI2014]道路堵塞

    题目描述 给你一张\(N\)个点.\(M\)条边的有向图,按顺序给定你一条有\(L\)条边的\(1\rightarrow n\)的最短路, 每次断掉这\(L\)条边中的一条(不对后面答案产生影响),求 ...

  2. 【excle基础】如何去掉excel某一列中的字段的空格

    如图所示,想要去掉A列的空格: 查找空格,全部替换

  3. TensorFlow深度学习实战---图像识别与卷积神经网络

    全连接层网络结构:神经网络每两层之间的所有结点都是有边相连的. 卷积神经网络:1.输入层 2.卷积层:将神经网络中的每一个小块进行更加深入地分析从而得到抽象程度更高的特征. 3 池化层:可以认为将一张 ...

  4. Firefox开发

    官方文档 First extension 目录结构 ➜ firefox tree . └── borderify └── manifest.json // 必须 directory, files ma ...

  5. unittest,requests——接口测试脚本及报告

    用unittest管理两个利用requests模块,做百度搜索的简单接口测试用例,之后自动输出报告 # encoding=utf-8import requests,unittest,HTMLTestR ...

  6. 《C++设计新思维》勘误,附C++14新解法

    勘误: 原书(中文版)3.13节,65-69页中GenScatterHierarchy以及FieldHelper均存在问题,当TypeList中类型有重复时,无法通过编译(原因在于“二义性基类”). ...

  7. 152.[LeetCode] Maximum Product Subarray

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...

  8. Python Tkinter-Event

    1.点击 from tkinter import * root=Tk() def printCoords(event): print(event.x,event.y) bt1=Button(root, ...

  9. BVT、EVT、DVT、PVT产品开发几个阶段

      EVT EVT(Engineering Verification Test) 工程验证 产品开发初期的设计验证.设计者实现样品时做初期的测试验证,包括 功能和安规测试,一般由 RD(Researc ...

  10. LeetCode 289. Game of Life (C++)

    题目: According to the Wikipedia's article: "The Game of Life, also known simply as Life, is a ce ...