HJ179 小苯的IDE括号问题(easy)

  • 题目
  • 题解(15)
  • 讨论(9)
  • 排行

中等 通过率:30.18% 时间限制:1秒 空间限制:256M

知识点双指针

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

在一款智能代码编辑器中,光标用字符 II 表示。初始时给出一个只包含字符 ((、))、II 的括号串,其中 恰好出现一次 II 作为光标位置。编辑器支持下列两种删除操作:

1. 1.​ backspace

∘ ∘若光标左侧字符为 `(`,且光标右侧紧跟字符为 `)`,编辑器会一次性删除这对括号;

∘ ∘否则,若光标左侧仍有字符,则仅删除光标左侧一个字符;若左侧为空则无效果。

2. 2.​ delete

∘ ∘若光标右侧存在字符,则删除光标右侧第一个字符;否则无效果。

给定初始括号串以及 kk 次操作序列(每次为 backspacedelete),请输出全部操作执行完毕后的最终字符串。

输入描述:

第一行输入两个整数 n,k(1≦k≦n≦2×105)n,k(1≦k≦n≦2×105)------初始字符串长度及操作次数。

第二行输入长度为 nn 的字符串 ss,仅包含 `(`, `)` 与 `I`,其中 II 恰好出现一次。

接下来 kk 行,每行输入一个操作类型:backspacedelete

输出描述:

输出一行字符串,表示所有操作结束后的括号串。

示例1

输入:

复制代码
10 3
((()(I))((
backspace
backspace
delete

复制输出:

复制代码
(((I((

复制

示例2

输入:

复制代码
5 3
((I))
backspace
backspace
delete

复制输出:

复制代码
I

复制说明:

复制代码
显然括号都被删除完了。
cpp 复制代码
#include <iostream>
#include <string>
#include <vector>
#include <deque>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n, m;
    cin >> n >> m;
    string s;
    cin >> s;

    deque<char> left_q, right_q;
    int cursor_pos = -1;
    for (int i = 0; i < n; ++i) {
        if (s[i] == 'I') {
            cursor_pos = i;
            break;
        }
        left_q.push_back(s[i]);
    }
    for (int i = cursor_pos + 1; i < n; ++i) {
        right_q.push_back(s[i]);
    }

    for (int i = 0; i < m; ++i) {
        string op;
        cin >> op;
        if (op == "backspace") {
            if (!left_q.empty() && !right_q.empty() && left_q.back() == '(' && right_q.front() == ')') {
                left_q.pop_back();
                right_q.pop_front();
            } else if (!left_q.empty()) {
                left_q.pop_back();
            }
        } else { // delete
            if (!right_q.empty()) {
                right_q.pop_front();
            }
        }
    }

    for (char c : left_q) {
        cout << c;
    }
    cout << 'I';
    for (char c : right_q) {
        cout << c;
    }
    cout << endl;

    return 0;
}
相关推荐
CS创新实验室37 分钟前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
海石2 小时前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode
海石2 小时前
1400分的dp汗流浃背之【交替子数组计数】
算法·leetcode
奋发向前wcx2 小时前
P2590 树的统计 题目解析
数据结构·算法·深度优先
2023自学中3 小时前
C++ 内存追踪器
linux·c++
imbackneverdie3 小时前
AI4S不止于分子药物:以MedPeer为代表的科研基建打开产业新增量
大数据·人工智能·算法·aigc·科研·学术·ai 4s
额鹅恶饿呃4 小时前
C语言中的数据结构和变量
c语言·数据结构·算法
运行时记录6 小时前
prompt-optimizer skill
算法
万法若空6 小时前
【数据结构-哈希表】哈希表原理
数据结构·算法·散列表
退休倒计时6 小时前
【每日一题】LeetCode 437. 路径总和 III TypeScript
算法·leetcode·typescript