栈判断括号

#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
    stack<char> str2;
    char str[1200];
    int t = 1;   
    cin.getline(str,1000);
        int num1 = 0,num2 = 0;
        for(int i = 0;i<strlen(str);i++){
            if(str[i]=='('||str[i]=='{'||str[i]=='['){
                num1++;
                str2.push(str[i]);
            }
            else if(str[i]==')'||str[i]=='}'||str[i]==']'){
                num2++;
                if(str2.empty()){ 
                    t = 0;
                }
                if(!str2.empty()){
                    char c = str2.top();
                
                if(c=='('&&str[i]!=')'||c=='{'&&str[i]!='}'||c=='['&&str[i]!=']'){
                    t = 0;
                }
                str2.pop();
                }
            }
        }
    if(num1!=num2){   
        t = 0;
    }
    if(t==1){
        printf("%d %d\n",num1,num2);
        printf("YES\n");
    }
    else if(t==0){
        printf("%d %d\n",num1,num2);
        printf("NO\n");
    }
    return 0;
}    

 

posted @ 2020-10-21 18:04  一只菜鸡!  阅读(35)  评论(0)    收藏  举报