小猴编程周赛C++ | 2022年秋第8周T3文本编辑器

学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!

附上汇总贴:小猴编程C++ | 汇总-CSDN博客


【题目描述】
小猴是一个热爱英语课的小学生。
小猴很喜欢玩字母拼字游戏,每次按顺序插入一些字母,使得相同字母组成的连续字符串,为了记录自己的拼字结果,小猴希望实现一个字符串编辑器。
开始时,编辑器的文本是空的,为了定位操作的位置,编辑器还提供了一个光标。光标是指向文本的字符间隙的一个标记。
给定 n n n条修改操作,请模拟编辑器在这些操作下的行为,最后输出编辑器所记录的文本内容:

  • 插入操作:该操作还需要提供一个字符 x x x作为参数,编辑器在光标的左侧插入该字符;
  • 右移操作:编辑器将光标向右移动一格,如果光标已经在最右端,则忽略这步操作;
  • 左移操作:编辑器将光标向左移动一格,抑果光标已经在最左端,则忽略这步操作;
  • 删除操作:文本编辑器删去光标右侧的字符,若光标右侧没有字符,则忽略这步操作。

【输入】
第一行一个整数 n n n
第二行到第 n + 1 n+1 n+1行,每行表示一个操作:

  • 插入操作以字母 I I I开头,后接一个字母 x x x,保证该字母是一个大写的英文字母;
  • 删除操作仅有一个字母 D D D
  • 右移操作仅有一个字母 R R R
  • 左移操作仅有一个字母 L L L

【输出】
一行,包含一个字符串,表示编辑器最后所记录的文本内容。
【输入样例】

5
I H
I E
I L
I L
I O

【输出样例】

HELLO

【代码详解】
[图片]

#include <bits/stdc++.h>
using namespace std;
int n, pos;
char op, x, s[500010];
stack<char> A, B;
int main()
{
    cin >> n;
    while (n--) {
        cin >> op;
        if (op=='I') {
            cin >> x;
            A.push(x);
        } else if (op=='D' && B.size()) {
            B.pop();
        } else if (op=='R' && B.size()) {
            A.push(B.top());
            B.pop();
        } else if (op=='L' && A.size()) {
            B.push(A.top());
            A.pop();
        }
    }
    while (A.size()) {
        s[++pos] = A.top();
        A.pop();
    }
    for (int i=pos; i>=1; i--) cout << s[i];
    while (B.size()) {
        cout << B.top();
        B.pop();            
    }
    cout << endl;
    return 0;
}

【运行结果】

5
I H
I E
I L
I L
I O
HELLO
  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值