D题求解

#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 50;
struct Node{
    char ch;
    int left,right;
}a[N];

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n,k,m;
    cin >> n >> k;
    for(int i = 1;i <= n;i++){
        cin >> a[i].ch;
        if(a[i].ch == 'I') m = i;
        a[i].left = i - 1;
        a[i].right = i + 1;
    }
    while(k--){
        string s;
        cin >> s;
        if(s == "backspace"){
            if(m > 1){
                if(a[a[m].left].ch == '(' && a[a[m].right].ch == ')'){
                    a[a[m].left].ch = '0',a[a[m].right].ch = '0';
                    a[m].left = a[a[m].left].left;
                    a[m].right = a[a[m].right].right;
                    a[a[m].left].right = m;
                    a[a[m].right].left = m;
                }
                else{
                    a[a[m].left].ch = '0';
                    a[m].left = a[a[m].left].left;
                    a[a[m].left].right = m;
                }
            }
        }
        if(s == "delete"){
            if(m < n){
                a[a[m].right].ch = '0';
                a[m].right = a[a[m].right].right;
                a[a[m].right].left = m;
            }
        }
        if(s == "<-"){
            if(m > 1){
                a[m].ch = a[a[m].left].ch;
                a[a[m].left].ch = 'I';
                m = a[m].left;
            }
        }
        if(s == "->"){
            if(m < n){
                a[m].ch = a[a[m].right].ch;
                a[a[m].right].ch = 'I';
                m = a[m].right;
            }
        }
    }
    for(int i = 1;i <= n;i++){
        if(a[i].ch != '0') cout << a[i].ch;
    }
    // cout << "\n\n";
    // for(int i = 1;i <= n;i++){
    //     cout << i << " " << a[i].ch << " " << a[i].left << " " << a[i].right << "\n";
    // }


    return 0;
}

left和right记录下标 为什么只有五十的正确率

全部评论
看上去是双向链表做法,题解中给了一个双向链表的代码,可以照着它调
点赞 回复 分享
发布于 2024-02-19 11:25 陕西

相关推荐

07-17 11:56
门头沟学院 Java
感谢东子的收留
熬夜脱发码农:无敌了,这是我看到第二个京东的提前批大佬了我还在畏畏缩缩准备八股算法
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务