本文共 1333 字,大约阅读时间需要 4 分钟。
利用栈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 ;}}转载于:https://blog.51cto.com/13579083/2330058