文章

3

粉丝

28

获赞

6

访问

1.4k

头像
括号匹配问题 题解:
P1296 北京大学机试题
发布于2024年6月15日 10:41
阅读数 395

将 '(' 插入栈时也插入 '(' 的下标(结构体),最后遍历栈,将对应下标位置字符设置为 '$'。

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

struct ch {
    char c;
    int idx;
};

void match(string s) {
    stack<ch> stk;
    string f(s.length(), ' ');
    int len = s.length();
    int i;
    for (i = 0; i < len; ++i) {
        if (s[i] == '(') {
            f[i] = ' ';
            stk.push({s[i], i});
        }
        else if (s[i] == ')') {
            if (!stk.empty()) {
                f[i] = ' ';
                stk.pop();
            }
            else
                f[i] = '?';
        }
        else
            f[i] = ' ';
    }
    while (!stk.empty()) {
        f[stk.top().idx] = '$';
        stk.pop();
    }

    cout << s << endl;
    cout << f << endl;
}

int main() {
    int n, i;
    string s;
    while (cin >> s) {
        match(s);
    }
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发