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; } };