Leetcode链接:20. 有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
提示:
false,若不为空,取栈顶元素,若栈顶元素是与之对应的左括号则出栈,否则返回falsetrue,否则返回false



class Solution {
public:
bool isValid(string s) {
stack<char> mystack;
//遍历字符串
for(int i = 0; i < s.size(); ++i)
{
//为左括号入栈
if(s[i] == '(' || s[i] == '{' || s[i] == '[')
{
mystack.push(s[i]);
}
else
{
//遍历到右括号,如果栈为空,则不匹配
if(mystack.empty())
return false;
//不为空
char top = mystack.top();
mystack.pop();
if(s[i] == ')' && top != '('
|| s[i] == '}' && top != '{'
|| s[i] == ']' && top != '[')
{
return false;
}
}
}
//最后判断栈是否为空,如果栈为空,则证明这是一个有效的字符串
return mystack.empty();
}
};