这是栈的一个经典利用场景,除此外,栈一般还利用在方法栈和递归当中
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(); } }