博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习之—栈匹配字符串符号
阅读量:4326 次
发布时间:2019-06-06

本文共 2638 字,大约阅读时间需要 8 分钟。

/** * 栈 * Create by Administrator * 2018/6/11 0011 * 上午 10:20 **/public class StackR {    private int maxSixe;    private char[] stackArray;    private int top;    public StackR(int s) {        this.maxSixe = s;        this.stackArray = new char[maxSixe];        this.top = -1;    }    /**     * 入栈     * @param j     */    public boolean push(char j){        if(isFull()){            System.out.println("栈已满");            return false;        }else{            this.stackArray[++top] = j;            return true;        }    }    /**     * 出栈     */    public char pop(){        return stackArray[top--];    }    /**     * 查看     * @return     */    public void peek(){        System.out.println(stackArray[top]);    }    /**     * 判断栈是否为空     * @return     */    public boolean isEmpty(){        return (top == -1);    }    /**     * 判断栈是否满了     * @return     */    public boolean isFull(){        return (top == maxSixe-1);    }}

  

public class BracketChecher {    private String input;    public BracketChecher(String input) {        this.input = input;    }    public void check(){        int stackSize = input.length();        StackR stackR = new StackR(stackSize);        for (int i = 0; i < stackSize; i++) {            char ch = input.charAt(i);            switch (ch){                case '{':                case '[':                case '(':                    stackR.push(ch);                    break;                case '}':                case ']':                case ')':                    if(!stackR.isEmpty()){                        char chx = stackR.pop();                        if(ch == '}' && chx != '{' || ch == ']' && chx != '[' || ch == ')' && chx != '('){                            System.out.println("Error:"+ch+" at "+i);                        }                    }else{                        System.out.println("Error:"+ch+" at "+i);                    }                default:                    break;            }        }        if(!stackR.isEmpty()){            System.out.println("Error: missing right delimiter");        }    }    public static String getString() throws IOException{        InputStreamReader isr = new InputStreamReader(System.in);        BufferedReader br = new BufferedReader(isr);        String s = br.readLine();        return s;    }    public static void main(String[] args) throws IOException {        while(true){            System.out.flush();            String input = getString();            BracketChecher b = new BracketChecher(input);            b.check();        }    }

  测试控制台输入字符串:a{b(c]d}

  结果:Error:] at 3

转载于:https://www.cnblogs.com/chancy/p/9167091.html

你可能感兴趣的文章
Hadoop以及组件介绍
查看>>
1020 Tree Traversals (25)(25 point(s))
查看>>
第一次作业
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>