20. 有效的括号

转载自Leet Code

题目描述

给定一个只包括 '('')''{''}'['']'  的字符串,判断字符串是否有效。 有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1: >输入: "()" >输出: true

示例 2: >输入: "()[]{}" >输出: true

示例 3: >输入: "(]" >输出: false

示例 4: >输入: "([)]" >输出:false

示例 5: >输入: "{[]}" >输出: true


我的代码

{.line-numbers}
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
class MySolution {
Stack<Character> stack = new Stack();

public boolean isValid(String s)
{
for (int i=0; i<s.length(); i++)
{
char ch = s.charAt(i);
if (ch=='('||ch=='{'||ch=='[') stack.push(ch);
else if (!stack.isEmpty()&&(Match(stack.peek(),ch)))
stack.pop();
else return false;
}
if (!stack.isEmpty()) return false;
return true;
}

public boolean Match(char ch1, char ch2)
{
if (ch1=='('&&ch2==')') return true;
if (ch1=='{'&&ch2=='}') return true;
if (ch1=='['&&ch2==']') return true;
return false;
}
}