solution.md 1.9 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
# 有效的括号

<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

```