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));
    }
}

 

posted @ 2022-07-07 21:03  心动如雷  阅读(37)  评论(0)    收藏  举报