package q20;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Stack;
/**
* @desc 有效的括号
* @author wangymd
* @data 2022-07-07 20:14:57
*/
public class Solution {
private static final Map<Character, Character> CHARSMAP = new HashMap<>();
static {
CHARSMAP.put(Character.valueOf(')'), Character.valueOf('('));
CHARSMAP.put(Character.valueOf(']'), Character.valueOf('['));
CHARSMAP.put(Character.valueOf('}'), Character.valueOf('{'));
}
public boolean valid(String s) {
char[] chars = s.toCharArray();
Stack<Character> stack = new Stack<>();
for (Character c : chars) {
//栈顶和CHARSMAP中c为key的value对比
if(!stack.isEmpty() && Objects.equals(CHARSMAP.get(c), stack.peek())) {
stack.pop();
continue;
}
stack.push(c);
}
return stack.isEmpty();
}
public static void main(String[] args) {
String s1 = "()";
String s2 = "()[]{}";
String s3 = "(]";
String s4 = "([)]";
String s5 = "{[]}";
Solution solution = new Solution();
System.out.println("res:" + solution.valid(s1));
System.out.println("res:" + solution.valid(s2));
System.out.println("res:" + solution.valid(s3));
System.out.println("res:" + solution.valid(s4));
System.out.println("res:" + solution.valid(s5));
}
}