编程题:文本转换
艾迪正在打一篇稿子,稿子只包含空格和26个小写字母。但他的键盘中有6个按键出现了故障,当按下k键时会使当前输入光标左移一个字符位置(如果光标在文档头则不左移),当按下z键时会使当前输入光标右移一个字符位置(如果光标在文档尾则不右移),当按下w键时会使当前输入光标移至文档开始位置,当按下s键时会使当前输入光标移至文档尾,当按下q键时会删除当前输入光标前的一个字符,当按下m键时会使输入光标在插入和改写(覆盖)状态切换(初始是插入状态)。现给定艾迪的原始稿子,请编写程序输出使用故障键盘打出的稿件,即屏幕最终显示的文本。
关于m键的解释:若当前输入状态是ab|cd(|表示光标):(1)若处在插入状态,则输入字符插入到光标后面,如输入x,则变为abx|cd;(2)若处在改写(覆盖)状态,则输入字符覆盖光标后面的字符,如输入x,则变为abx|d。(3)初始时为插入状态,按一下m键切换到改写状态,再按一下m键切换回插入状态,再按一下m键,切换到改写状态......以此类推。
### 输入格式:
输入为一行字符,字符个数不超过50000,包含a-z的小写字母及空格,表示艾迪的原始稿件。
### 输出格式:
输出为一行字符,表示在艾迪使用故障键盘实际打出来的文本。
### 输入样例1:
in
abckd
### 输出样例1:
out
abdc
### 输入样例2:
in
abckkzd
### 输出样例2:
out
abdc
### 输入样例3:
in
abcwd
### 输出样例3:
out
dabc
### 输入样例4:
in
abcwdse
### 输出样例4:
out
dabce
### 输入样例5:
in
abcq
### 输出样例5:
out
ab
### 输入样例6:
in
abckmd
### 输出样例6:
out
abd
### 输入样例7:
in
abckkmdme
### 输出样例7:
out
adec
答案:若无答案欢迎评论
关于m键的解释:若当前输入状态是ab|cd(|表示光标):(1)若处在插入状态,则输入字符插入到光标后面,如输入x,则变为abx|cd;(2)若处在改写(覆盖)状态,则输入字符覆盖光标后面的字符,如输入x,则变为abx|d。(3)初始时为插入状态,按一下m键切换到改写状态,再按一下m键切换回插入状态,再按一下m键,切换到改写状态......以此类推。
### 输入格式:
输入为一行字符,字符个数不超过50000,包含a-z的小写字母及空格,表示艾迪的原始稿件。
### 输出格式:
输出为一行字符,表示在艾迪使用故障键盘实际打出来的文本。
### 输入样例1:
in
abckd
### 输出样例1:
out
abdc
### 输入样例2:
in
abckkzd
### 输出样例2:
out
abdc
### 输入样例3:
in
abcwd
### 输出样例3:
out
dabc
### 输入样例4:
in
abcwdse
### 输出样例4:
out
dabce
### 输入样例5:
in
abcq
### 输出样例5:
out
ab
### 输入样例6:
in
abckmd
### 输出样例6:
out
abd
### 输入样例7:
in
abckkmdme
### 输出样例7:
out
adec
答案:若无答案欢迎评论