zoukankan      html  css  js  c++  java
  • java学习之—栈匹配字符串符号

    /**
     * 栈
     * 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

  • 相关阅读:
    PC-CSS-默认字体样式
    PC--CSS维护
    PC--CSS技巧
    PC--CSS优化
    PC--CSS命名
    PC--CSS常识
    Base64与MIME和UTF-7
    Base64算法与多版本加密技术
    Base64算法与MD5加密原理
    log4j的使用
  • 原文地址:https://www.cnblogs.com/chancy/p/9167091.html
Copyright © 2011-2022 走看看