小工具知识网

当前位置: 首页 > 行业知识 > 小苯的IDE括号问题(CD) -----牛客小白月赛87(双链表)

行业知识

小苯的IDE括号问题(CD) -----牛客小白月赛87(双链表)

2026-10-19 05:09:34 来源:互联网转载

C题:C-小苯的IDE括号问题(easy)_牛客小白月赛87 (nowcoder.com)

D题: D-小苯的IDE括号问题(hard)_牛客小白月赛87 (nowcoder.com)

��

 

C题代码: 

#includeusing namespace std;const int N = 2e5+10;int n,k;int l[N],r[N];//删除操作void remove(int x){    r[l[x]] = r[x];    l[r[x]] = l[x];}int main(){    cin.tie(nullptr)->ios::sync_with_stdio(false);    cin >> n >> k;    string s;    cin >> s;    //做一个标记头尾哨子    s = "L" + s + "R";    int pos = 0; //标记位置,用来去找鼠标I的位置    for(int i=1;i str;        if(str == "backspace")        {            if(s[l[pos]] == '(' && s[r[pos]] == ')')            {                remove(l[pos]);                remove(r[pos]);            }            else{                if(s[l[pos]] == 'L') continue;                remove(l[pos]);            }        }        else{            if(s[r[pos]] == 'R') continue;            remove(r[pos]);        }    }    for(int i=r[0];i!=s.size()-1;i=r[i])        cout ios::sync_with_stdio(false);    cin >> n >> k;    string s;    cin >> s;    s = "L" + s + "R";    int pos = 0;    for(int i=1;i str;        if(str == "backspace")        {            if(s[l[pos]] == '(' && s[r[pos]] == ')')            {                remove(l[pos]);                remove(r[pos]);            }            else{                if(s[l[pos]] == 'L') continue;                remove(l[pos]);            }        }        else if(str == "delete")        {            //注意:这块一定要仔细读题不要落条件,不写会超时(本人的错)                if(s[r[pos]] == 'R') continue;            remove(r[pos]);        }        else if(str == "->")        {            if(s[r[pos]] != 'R')            {                //交换只改变原数组,不改变双链表                //删除只改变双链表,不改变原数组                   int idx = r[pos];                swap(s[idx],s[pos]);                pos = idx; //一定要挪动一下pos的位置            }        }        else        {            if(s[l[pos]]!='L')            {                int idx = l[pos];                //这里交换原数组不会改变,双链表数组                swap(s[idx],s[pos]);                pos = idx;            }        }    }    //遍历链表    for(int i=r[0];i!=s.size()-1; i=r[i])        cout 

上一篇:Win10系统快速启动秘籍揭秘,轻松实现秒速启动!

下一篇:为什么想要那个?