Valid Parentheses

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
//20

#include<iostream>
#include<stack>
#include<string>

using namespace std;


class Solution {
public:
    bool isValid(string s) {
            //{[()]}
        stack<char> auxiliary;
        for(int i=0;i<s.size();i++){
            if(s[i]=='{' ||s[i]=='[' ||s[i]=='('){
                auxiliary.push(s[i]);
            }else{
//left brackets<right brackets
                if(auxiliary.size()==0){
                    return false;
                }
                char top=auxiliary.top();
                auxiliary.pop();

                char match;

                switch(s[i]){
                    case'}':match='{';break;
                    case']':match='[';break;
                    case')':match='(';break;
                    default:break;
                }

                if(top !=match){
                    return false;
                }

            }
        }
//stack still exist nums,left brackets>right brackets
        if(auxiliary.size() !=0){
            return false;
        }
        return true;
    }
};

int main(){
    string s="[]{}()";
    cout<<Solution().isValid(s)<<endl;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容