判断输入的字符是否可以闭合

这是栈的一个经典利用场景,除此外,栈一般还利用在方法栈和递归当中

import java.util.*;

public class Client {
    public static void main(String[] args) {
        String str = "()([])[]";
        boolean valid = isValid(str);
        System.out.println(valid);
    }

    /**
     * 移除单链表的第n个节点
     */
    static boolean isValid(String str) {
        Map<Character,Character> matchMap = new HashMap<>();
        matchMap.put('(',')');
        matchMap.put('{','}');
        matchMap.put('[',']');

        Stack<Character> stack = new Stack<>();
        for (char c : str.toCharArray()) {
            if(matchMap.containsKey(c)){
                stack.push(c);
            }else {// 右半边字符
                Character cur = stack.pop();
                if(c != matchMap.get(cur)){
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}
原文地址:https://www.cnblogs.com/dongma/p/12731673.html