# 有效的括号

<p>给定一个只包括 <code>'('</code>，<code>')'</code>，<code>'{'</code>，<code>'}'</code>，<code>'['</code>，<code>']'</code> 的字符串 <code>s</code> ，判断字符串是否有效。</p><p>有效字符串需满足：</p><ol>	<li>左括号必须用相同类型的右括号闭合。</li>	<li>左括号必须以正确的顺序闭合。</li></ol><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>s = "()"<strong><br />输出：</strong>true</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>s = "()[]{}"<strong><br />输出：</strong>true</pre><p><strong>示例 3：</strong></p><pre><strong>输入：</strong>s = "(]"<strong><br />输出：</strong>false</pre><p><strong>示例 4：</strong></p><pre><strong>输入：</strong>s = "([)]"<strong><br />输出：</strong>false</pre><p><strong>示例 5：</strong></p><pre><strong>输入：</strong>s = "{[]}"<strong><br />输出：</strong>true</pre><p> </p><p><strong>提示：</strong></p><ul>	<li><code>1 <= s.length <= 10<sup>4</sup></code></li>	<li><code>s</code> 仅由括号 <code>'()[]{}'</code> 组成</li></ul>

## template

```cpp
#include <stack>
char ascii_tab[128];
class Solution
{
public:
	bool isValid(string s)
	{
		if (s.size() == 0)
			return true;
		std::stack<char> st;
		ascii_tab['('] = 11;
		ascii_tab['{'] = 12;
		ascii_tab['['] = 13;
		ascii_tab[')'] = 21;
		ascii_tab['}'] = 22;
		ascii_tab[']'] = 23;
		for (auto c : s)
		{
			char n = ascii_tab[c];
			if (n < 20)
				st.push(n);
			else
			{
				if (st.empty())
					return false;
				if (n != st.top() + 10)
					return false;
				st.pop();
			}
		}
		if (st.empty())
			return true;
		return false;
	}
};
```

## 答案

```cpp

```

## 选项

### A

```cpp

```

### B

```cpp

```

### C

```cpp

```