有效的括号

1.题目

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

有效字符串需满足:

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

2.分析

这题括号的匹配刚好契合数据结构栈先进后出的特性。。所以就当输入为左括号时就入栈,当为右括号时就弹出栈顶元素进行匹配,匹配成功则继续,失败则直接返回false,这里有两个需要注意的地方就是当字符串长度为1时就肯定没效直接返回false,还有当循环结束了栈里面还有字符那说明也没用相应的匹配也返回false;

3.代码

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
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
int len = s.length();
if(len==1){
return false;
}else{
for (int i = 0; i < len; i++) {
char ch = s.charAt(i);
if(stack.empty()){
stack.push(ch);
}else{
if(ch=='('||ch=='['||ch=='{'){
stack.push(ch);
}else if(ch==')'){
char temp = stack.pop();
if(temp!='('){
return false;
}
}else if(ch==']'){
char temp = stack.pop();
if(temp!='['){
return false;
}
}else if(ch=='}'){
char temp = stack.pop();
if(temp!='{'){
return false;
}
}
}

}
}
if(!stack.empty()){
return false;
}
return true;

}
}