塔子哥开发了一个文本编辑器,支持插入、删除、移动游标和复制文本等基本功能。用户通过输入相应的命令来操作文本,直到输入“end”表示结束。每个命令影响游标位置和文本内容,最终输出的结果中需要用“|”标识游标的位置。例如,输入一系列操作后,若文本为“testtestfail”,游标在“test”和“testfail”之间,则输出为“test|testfail”。
定义两个双端队列分别表示游标左边和右边的文本。
小明玩腻了记事本,打算自己写一个文本编辑器。该编辑器有以下功能:
insert str
。表示将字符串str插入到当前游标所处位置,同时游标移动到str的右边。delete len
。表示将游标左边长度为len的字符串删除。要求该功能命令合法,即len≥0,如果len<0或者len大于字符串长度,则认为输入非法,不进行操作。move cnt
。将游标移动cnt次,如果为负数,向左移动,为正数,向右移动。如果cnt超过字符串左右边界,那么认为非法,不进行移动。copy
。将游标左边字符串复制并插入到游标的右边。游标位置不变。现在小明已经写好了该文本编辑器,而你正在使用它,那么输入一系列命令后,会得到什么结果呢?
每行仅输入一个功能对应的操作。如果为end,代表操作结束。
初始时,字符串为空。游标位置为0。
1≤str.length≤40
1≤len≤40
−40≤cnt≤40
调用insert,delete,move和copy的总次数不超过200次。
最终的文本结果,注意,结果应当包含游标,用"|"表示。
输入
insert test
insert pass
move 10
delete 4
insert fail
move -4
copy
end
输出
test|testfail