20-有效的括号

 

 主要是用栈的思想,c++里有栈的模板,可以直接调用。

思想:对字符每一项检查,如果是左括号就入栈,如果是右括号,先检查是否栈空,如果

栈空,肯定不行,接下来检查左右括号是否对应,入如果对应,就出栈;最后循环完检查

栈是否为空,如果非空,说明还有没有与之匹配的左括号,反之,则正好匹配完。

class Solution {
public:
    bool isValid(string s) {
        stack<int> s1;
        for(int i=0;i<s.length();i++)
        {
            if(s[i]=='(' || s[i]=='{'||s[i]=='[')
            s1.push(s[i]);
           if(s[i]==')' || s[i]=='}'||s[i]==']')
           {   if( s1.empty())return false;
               char str=s1.top();
               if(s[i]==')'&& str!='(' )return false;
               if(s[i]==']'&& str!='[' )return false;
               if(s[i]=='}'&& str!='{' )return false;
               
               
                
              s1.pop();
               
           }
        }
        if(s1.empty())
        return true;
        return false;
        
        
    }
};
View Code

 

posted @ 2020-08-05 10:38  卑微的孤独患者  阅读(109)  评论(0编辑  收藏  举报