文章

19

粉丝

0

获赞

148

访问

4.9k

头像
括号匹配 题解:简单之中亦有坑
P1501 西北工业大学机试题
发布于2025年3月16日 15:45
阅读数 197

基本思路:如果是左括号,入栈。如果是右括号,与栈顶匹配,成功栈顶出栈,失败怎么办?如果把匹配过程单独写成一个函数Judge,那就可以直接return flase;如果匹配过程写在main函数里,那就有些麻烦,自己写一写就知道需要引入一些bool变量作为标记,而且可能面临着输出多个NO的情况,大家做题的时候,一条路走着走着越来越麻烦,不如回头在看一看有没有更好的路子。

这道题最重要的一点:如果是右括号,不能仅仅与栈顶匹配,必须要先判定栈是否为空!eg:输入】】【,不加判空就会导致本轮循环空过导致卡75%!不过这一点也是基于代码的不同因人而异,所以我说本题简单中亦有坑,每个人的思路不一样,别人的错误经验对你可能没有什么用,所以仅讲述我解题中踩到的小坑为思路相似者解惑。

#include<bits/stdc++.h>
using namespace std;
bool Judge(string str){
    stack<char> s;
    int ls = str.length();
    for(int i = 0;i < ls;i++){
        if(str[i] == '(' || str[i] == '[')
        s.push(str[i]);
        if(str[i] == ')'){
            if(s.empty())
            return false;

            if(s.top() == '('){
&...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发