利用栈Stack 栈的几个常用方法 Stack是Vector的一个子类,它实现标准的后进先出堆栈。 Stack 仅仅定义了创建空堆栈的默认构造函数。 Stack包括了由Vector定义的所有方法,同时增加了几种它自己定义的方法,介绍如下: boolean empty( )-——-如果堆栈是空的,则返回true,当堆栈包含元素时,返回false。 Object peek( )———–返回位于栈顶的元素,但是并不在堆栈中删除它。 Object pop( )————返回位于栈顶的元素,并在进程中删除它。 Object push (Object element )———将element压入堆栈,同时也返回element。 int search(Object element)———在堆栈中搜索element,如果发现了,则返回它相对于栈顶 的偏移量。否则,返回-1。

public class Main { public static void main(String[] args) { String str = "(())abc{)}" ; System.out.println(isMatched(str)); } static boolean isMatched(String str){ //int string_size = brackets.length(); Stack<Character> match = new Stack<Character>(); char symbol ; boolean is_match = true ; for(int i = 0 ; i< str.length() ; i++){ //将字符加进字符串数组 symbol = str.charAt(i); //如果字符是“{”或“[”或“(”就加入栈堆 if(symbol == '{' || symbol == '[' || symbol == '('){ //加入堆栈 match.push(symbol); } //如果字符是“}”或“]”或“)” if(symbol == '}' || symbol == ']' || symbol == ')'){ //如果堆栈是空的 if(match.isEmpty()){ is_match = false ; break ; }else{ //如果是“}”并且堆栈里有“{”(peek先别删除) if((symbol =='}' && match.peek() =='{') ||(symbol ==']' && match.peek() =='[') ||(symbol ==')' && match.peek() =='(')){ //从堆栈里一起删除 match.pop(); }else{ is_match = false ; break ; } } } } //如果堆栈不为空 if(!match.isEmpty()){ is_match = false ; } return is_match ; } }