通过栈校验分隔符匹配的方法

这篇文章主要介绍“通过栈校验分隔符匹配的方法”,在日常操作中,相信很多人在通过栈校验分隔符匹配的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”通过栈校验分隔符匹配的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

成都创新互联是一家集网站建设,西林企业网站建设,西林品牌网站建设,网站定制,西林网站建设报价,网络营销,网络优化,西林网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

package helloclean;

public class StackX {

    private int maxSize;
    private char[] stackArray;
    private int top;

    public StackX(int max){
        maxSize = max;
        stackArray = new char[maxSize];
        top = -1;
    }

    public void push(char j) {
        stackArray[++top] = j;
    }

    public char pop() {
        return stackArray[top--];
    }

    public char peek() {
        return stackArray[top];
    }

    public boolean isEmpty() {
        return (top == -1);
    }

}
package helloclean;

public class BracketChecker {
    private String input;

    public BracketChecker(String in) {
        this.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 = theStack.pop();
                        if((ch == '}' && chx != '{') || (ch == ')' && chx != '(') ||
                                ch == ']' && chx != '[') {
                            System.out.println("Error : " + ch  + " at : " + j);
                        }
                    } else {
                        System.out.println("Error : " + ch  + " at : " + j);
                    }
                    break;
                default:
                    break;
            }
        }
        if(!theStack.isEmpty()) {
            System.out.println("missing right delimiter!");
        }
    }
}
package helloclean;

import java.util.Scanner;

public class BracketApp {
    public static void main(String[] args) {
        String input;
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("input : eg: (ab[cd]e{fg})");
            input = scanner.nextLine();
            if(input.equals("q")) {
                System.out.println("退出!");
                break;
            }
            BracketChecker bracketChecker = new BracketChecker(input);
            bracketChecker.check();

        }
    }
}
input : eg: (ab[cd]e{fg})
abc(de)[fg]{xxxxx
missing right delimiter!
input : eg: (ab[cd]e{fg})
abc[ef]ggg)dd
Error : ) at : 10
input : eg: (ab[cd]e{fg})
abc(x)d
input : eg: (ab[cd]e{fg})

到此,关于“通过栈校验分隔符匹配的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


新闻名称:通过栈校验分隔符匹配的方法
当前网址:http://azwzsj.com/article/ipigog.html