# 有效的括号

<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

```java
class Solution {
	public boolean isValid(String s) {
		char[] parentheses = { '(', '[', '{', ')', ']', '}' };
		int i = 0;
		char c;
		int[] sum = { 0, 0, 0 };
		Stack<Integer> top = new Stack<Integer>();
		while (i < s.length()) {
			c = s.charAt(i);
			for (int j = 0; j <= 2; j++) {
				if (c == parentheses[j]) {
					top.push(j);
					sum[j]++;
				} else if (c == parentheses[j + 3]) {
					if (top.size() == 0 || top.peek() != j) {
						return false;
					}
					top.pop();
					sum[j]--;
				} else {
				}
			}
			i++;
		}
		for (int j = 0; j <= 2; j++) {
			if (sum[j] != 0) {
				return false;
			}
		}
		return true;
	}
}
```

## 答案

```java

```

## 选项

### A

```java

```

### B

```java

```

### C

```java

```