用栈解决括号匹配问题

2020-05-03

问题: 输入一系列的括号,判断格式是否正确

这里直接用java写好的栈,栈的实现较简单,不单独手写栈了,可以用数组实现栈,也可以用链表实现

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
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;
import java.util.Stack;

public class BracketMatch {

/**
* 用栈解决括号匹配的类似问题
*
*/

public boolean isMatch(String str){
char[] c = str.toCharArray();
Stack<Character> stack = new Stack<>();

HashMap<Character, Character> hashMap = new HashMap<Character, Character>(){
{
put(')','(');
put('}','{');
put(']','[');
put('>','<');
}
};

Set<Character> keySet = hashMap.keySet();
Collection<Character> vC = hashMap.values();

for(char s : c){
if(vC.contains(s)){
stack.push(s);
}else if(keySet.contains(s)){
if(stack.pop() != hashMap.get(s)){
return false;
}
}
}
return stack.empty();
}

}
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章