java 使用栈匹配字符串符号
Posted 花儿为何那样红
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于java 使用栈匹配字符串符号的主要内容,如果未能解决你的问题,请参考以下文章