栈应用——分隔符匹配

来源:互联网 发布:我国导弹发展水平知乎 编辑:程序博客网 时间:2024/04/27 16:26
public class StackX {    private int maxSize;    private long[] stackArray;    private int top;    public StackX(int s){        maxSize=s;        stackArray = new long[maxSize];        top=-1;    }    public void push(long j){        stackArray[++top]=j;    }    public long pop(){        return stackArray[top--];    }    public long peek(){        return stackArray[top];    }    public boolean isEmpty(){        return (top==-1);    }    public boolean isFull(){        return (top==maxSize-1);    }}
public class BracketChecker {//分隔符匹配    private String input;    public BracketChecker(String in){        input=in;    }    public void check(){        int stackSize = input.length();        StackX theStack = new StackX(stackSize);        for(int j=0;j<input.length();j++){            char ch = input.charAt(j);            switch(ch){                case '{':                case '[':                case '(':                    theStack.push(ch);                    break;                case '}':                case ']':                case ')':                    if(!theStack.isEmpty()){                        char chx = (char) theStack.pop();                        if((ch=='}'&&chx!='{')||(ch==']'&&chx!='[')||(ch==')'&&chx!='(')){                            System.out.println("Error: "+ch+" at "+j);                        }                        else if((ch=='}'&&chx=='{')||(ch==']'&&chx=='[')||(ch==')'&&chx=='(')){                            System.out.println("right!!!");                        }                    }                    else                        System.out.println("Error: "+ch+" at "+j);                    break;                    default:                        break;            }        }        if(!theStack.isEmpty()){            System.out.println("Error:missing right delimiter");        }    }}
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class BracketsApp {    /**     * @param args     * @throws IOException      */    public static void main(String[] args) throws IOException {        // TODO Auto-generated method stub        String input;        while(true){            System.out.flush();            input = getString();            if(input.equals("")){                break;            }            BracketChecker theChecker = new BracketChecker(input);             theChecker.check();        }    }    public static String getString() throws IOException{        InputStreamReader isr = new InputStreamReader(System.in);        BufferedReader br = new BufferedReader(isr);        String s = br.readLine();        return s;    }}
1 0
原创粉丝点击