#leetcode刷题之路20-有效的括号

#include <iostream>
#include <string>
#include <stack>
using namespace std;

bool isValid(string s) {
    stack<char> a;
    int len=s.size();
    if(len==1) return 0;
    if(len==0) return 1;
    for(int i=0;i<len;i++)
    {
        switch (s[i])
        {
            case ')':
            {
                if((a.size()!=0)&&a.top()=='(') a.pop();
                else return false;
                break;
            }
            case '}':
            {
                if((a.size()!=0)&&a.top()=='{') a.pop();
                else return false;
                break;
            }
            case ']':
            {
                if((a.size()!=0)&&a.top()=='[') a.pop();
                else return false;
                break;
            }
            default:a.push(s[i]);
                break;
        }
    }
    cout<<a.size()<<endl;
    if(a.size()==0) return true;
    else return false;
    }

int main() {
    string s="){";
    std::cout << isValid(s) << std::endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/biat/p/10525081.html