20、有效的括号
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)); } }