censor

题目描述

农民约翰已经购买了订好Good Hooves keeping 杂志为他的奶牛,使他们有足够的材料看。不幸的是,最新一期载有关于如何煮完美的牛排的文章,而FJ 宁可他的奶牛没有看到一个相当不雅的文章(显然,这本杂志是需要更好的编辑监督的)。
FJ 已采取所有文字从该杂志在10^6 个字符来创建长度字符串s。从此,他想删除一个子串T( 100个字符)来审查不当内容。要做到这一点,农民约翰找到S 中的出现的T 并将其删除。然后,他再次重复这个过程,删除第一次出现的T,一直持续到没有更多出现T 的S. 注意,删除一次出现的可能会创建一个新出现的T 是以前不存在的。
请帮助审查完毕后,FJ 确定S 的最终内容。

输入

第一行将包含S
第二行包含T,T 的长度最多是S 的长度,S 和T 的所有字符位小写字母(范围a..z)

输出

全部删除完成后的S。保证使得S 在删除过程中不会成为空

样例输入

whatthemomooofun
moo

样例输出

whatthefun

TJ

这道题其实就是一个栈。每次压一个字符进去,再判断后length(t)个字符是不是等于t,是就弹栈。

BC

var
        s,s1,t:ansistring;
        i,j,l:longint;
        c:array[1..1000000]of char;
        p:boolean;
begin
        assign(input,'censor.in');reset(input);
        assign(output,'censor.out');rewrite(output);
        readln(s1);
        readln(t);
        for i:=1 to length(s1) do
        begin
                inc(l);
                c[l]:=s1[i];
                if (c[l]=t[length(t)])and(l>=length(t)) then
                begin
                        p:=true;
                        for j:=l-length(t)+1 to l do
                        if c[j]<>t[j-(l-length(t))] then
                        begin
                                p:=false;
                                break;
                        end;
                        if p then l:=l-length(t);
                end;
        end;
        for i:=1 to l do s:=s+c[i];
        writeln(s);
        close(input);close(output);
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值