LeetCode-20 Valid Parentheses

来源:互联网 发布:福建厦门广电网络 编辑:程序博客网 时间:2024/06/18 02:42

题目:给定一个只包含‘(’,‘[’,'{',')',']','}'的字符串,判断其是否一个合法的闭合字符串。

思路:可利用一个栈,遍历字符串,每碰到‘(’,‘[’,'{'则将其入栈,每碰到,')',']','}',则出栈一个字符,同时判断出栈的字符是否匹配当前字符,如果最后栈为空,则合法。

class Solution {public:    bool isValid(string s) {                stack<char> s1;        int length=s.size();        if(length==0)return true;        if(length%2!=0)return false;          int i=length-1;        while(i>=0){            if(s[i]=='}'||s[i]==']'||s[i]==')'){                s1.push(s[i]);                i--;            }            else{                    if(s[i]=='{'){                        if(!s1.empty()&&s1.top()=='}'){                            s1.pop();                            i--;                        }                    else{                        return false;                    }                                           }                     if(s[i]=='['){                        if(!s1.empty()&&s1.top()==']'){                            s1.pop();                            i--;                        }                    else{                        return false;                    }                                            }                     if(s[i]=='('){                        if(!s1.empty()&&s1.top()==')'){                            s1.pop();                            i--;                        }                    else{                        return false;                    }                       }              }          }        if(s1.size()==0)        return true;        else        return false;    }};


0 0
原创粉丝点击