#P0721. 口号编辑器

口号编辑器

题目描述

ACM 比赛开始前,一支队伍正在修改自己的队伍口号。

一开始,队伍口号是一个字符串 s,光标位于字符串末尾。接下来会进行 q 次编辑操作,每次操作可能会移动光标、插入字符、删除字符,或者把整个字符串反转。

请你按照给定顺序模拟所有操作,并输出最终的队伍口号。

共有五种操作:

  1. LEFT:如果光标不在最左边,将光标向左移动一位;
  2. RIGHT:如果光标不在最右边,将光标向右移动一位;
  3. INS c:在光标所在位置插入字符 c,插入后光标移动到新字符右侧;
  4. DEL:删除光标右侧的第一个字符;如果光标已经在最右边,则不进行任何操作;
  5. REV:将当前字符串整体反转,光标也跟着移动到反转后对应的位置。

如果最终字符串为空,第一行输出 EMPTY

第二行输出最终光标左侧有多少个字符。

输入格式

1 行输入一个字符串 s,表示初始队伍口号。

2 行输入一个整数 q,表示操作次数。

接下来 q 行,每行输入一个操作,格式为 LEFTRIGHTINS cDELREV

输出格式

输出共 2 行。

1 行输出所有操作完成后的队伍口号。如果最终字符串为空,输出 EMPTY

2 行输出最终光标左侧有多少个字符。

样例

Team
7
LEFT
LEFT
INS 2
RIGHT
INS 6
REV
DEL
ma2eT
1
x
3
LEFT
DEL
DEL
EMPTY
0

样例说明

样例 1 中,初始光标在 Team 末尾。经过移动、插入、反转和删除操作后,最终字符串为 ma2eT,光标左侧有 1 个字符。

样例 2 中,先将光标移动到最左边,第一次 DEL 删除字符 x,第二次 DEL 不产生变化,因此输出 EMPTY0

数据范围

  • 对于 100% 的数据,满足 1 <= s.length() <= 100
  • 1 <= q <= 100
  • 字符串 s 和操作中的字符 c 只包含大小写英文字母和数字字符