本题的核心在于模拟字符串的编辑过程,涉及字符串的操作、撤销机制和翻转操作。我们可以使用**双端队列(deque)**来高效地完成这些操作。
R
代表反转字符串,可以使用一个标志位 reversed_flag
来追踪当前字符串是否处于反转状态。Z
代表撤销上一步操作,我们需要记录上一步操作类型,并在遇到 Z
时进行相应撤销。deque
,如果当前处于反转状态,则从头部插入,否则从尾部插入。小美有一个由大小写字母混合构成的加密字符串s,你需要按照以下准则将其解密得到字符串t。初始时字符串t为空,对于字符串s的每一个字符si:
如果上一步为‘R’,则取消反转;
如果上一步为其他字符,删除这个字符;
上一步为空,则跳过这一操作;
请你直接输出解密完成后的字符串t。
每个测试文件均包含多组测试数据。第一行输入一个整数T(1≦T≦2×105)代表数据组数,
每组测试数据描述如下:
第一行输入一个长度为1≦len(s)≤2×105的字符串s代表加密字符串。
除此之外,保证单个测试文件的字符数量之和不超过106。
对于每一组测试数据,新起一行输出解密完成后的字符串t。数据保证字符串长度不为0。
输入
2
meRDZ
DameDame
输出
em
DameDame
对于第一组测试数据,解密过程依次为: