【SSLGZ 2058】字符串编辑

问题描述
为了对一些资料进行保密,奶牛们要对某些文章进行编辑。编辑的方法很奇特:要把原有文章的某些词句按照某些规则用另一些词句代替。
规则的形式如下:原串新串,表示把原串替换成新串。假设有n条规则,第i规则的原串和新串分别为Mi和Ni,则编辑按如下过程进行:开始编辑时,先使用第一条规则,把文章中出现的第一个M1替换成N1,如果替换后的新文章还存在M1,则如上处理,直到文章不存在M1为止;然后用同样的方法使用第2,第3,……,第n条规则进行替换,直到所有的规则都用完为止。注意:
 每次都要从文章开头开始找要替换的词句
 一条规则一旦使用完后,将不能再使用
 每一篇文章都是可编辑的
如有四条规则:1. banbab 2. bababe 3. anaany 4. ba b hind the g 要编辑的文章为“banana boat”,则编辑的过程如下: 这里写图片描述
编辑后的文章为“behind the goat”。请编写一程序,帮助组委会对给定的文章进行编辑。
输入
文件共有2n+2行。文件的第一行是一个整数n(1<=n<=10),表示规则的数目;接下来第2i行及第2i+1行分别表示Mi和Ni(1<=i<=n),其长度均不超过80个字符,且Mi不为空串;最后一行是要编辑的文章,长度不超过80个字符。行末没有空格。
输出
文件只有一行,表示编辑后的文章(长度不超过80个字符)。行末也应该没有空格。
样例输入1
4
ban
bab
baba
be
ana
any
ba b
hind the g
banana boat
样例输入2
1
t
sh
toe or top
样例输出1
behind the goat
样例输出2
shoe or shop
算法讨论
暴力模拟就好。

const
  maxn=10;
var
  a,b:array[1..maxn] of string;
  i,j,l,n,p:longint;
  st:string;
begin
  assign(input,'editing.in'); reset(input);
  assign(output,'editing.out'); rewrite(output);
  readln(n);
  for i:=1 to n do
    begin
      readln(a[i]);
      readln(b[i])
    end;
  readln(st);
  for i:=1 to n do
    while pos(a[i],st)<>0 do
      begin
        l:=length(a[i]);
        p:=pos(a[i],st);
        delete(st,p,l);
        insert(b[i],st,p)
      end;
  writeln(st);
  close(input); close(output) 
end.

这里写图片描述
Pixiv ID:52785383

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值