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

java学习之—栈匹配字符串符号相关推荐

  1. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  2. Java学习笔记:常用字符串方法和正则表达式

    String类 -字符串并置 public class Main {public static void main(String[] args) {String a = "1";S ...

  3. LeetCode_Stack_331. Verify Preorder Serialization of a Binary Tree 验证二叉树的前序序列化(Java)【栈,字符串处理】

    目录 一,题目描述 英文描述 中文描述 示例与说明 二,解题思路 1,栈合并节点 2,计算入度出度和 三,AC代码 Java 栈 计算出入度 四,解题过程 第一博 第二搏 一,题目描述 英文描述 On ...

  4. Java在一个文件中匹配字符串

    为什么80%的码农都做不了架构师?>>>    import java.io.*; import java.util.regex.*; import java.util.*; /** ...

  5. Java学习总结:飘逸的字符串

    Java学习:飘逸的字符串 前言 相信不管我们运用Java语言来开发项目还是进行数据分析处理,都要运用到和字符串相关的处理方法.这个社会处处有着和字符串相关的影子:日志.文档.书籍等.既然我们离不开字 ...

  6. java的lookingat_Java Matcher.lookingAt()部分匹配字符串

    首页 > 基础教程 > 正则表达式 > Matcher类 Java Matcher.lookingAt()部分匹配字符串 Matcher.lookingAt()对前面的字符串进行匹配 ...

  7. 【java学习】String字符串

    1,概念 1)String 不可变 不可变类:final,不可被继承. public final class String implements java.io.Serializable, Compa ...

  8. 【原】Java学习笔记022 - 字符串

    1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // ...

  9. java正则表达式匹配字符串_java正则表达式如何匹配字符串

    java正则表达式匹配字符串的方法:使用tostring,代码为[while(matcher.find()){tmp.add(matcher.group(1).toString());}]. java ...

  10. java压栈重复字符串_Java 实例 – 压栈出栈的方法实现字符串反转

    Java 实例 - 压栈出栈的方法实现字符串反转 以下实例演示了使用用户自定义的方法 StringReverserThroughStack() 来实现字符串反转: /* author by w3csc ...

最新文章

  1. 解释为什么用梯度下降而不是直接求导数为0的解
  2. 第 2 章 常量、变量和表达式
  3. 你可以不知道原因,但是,我们不能停止努力。httplook抓取路由配置界面信息...
  4. 如何使用SAP事务码SAT进行UI应用的性能分析
  5. windows2003添加普通用户的远程桌面权限
  6. mysql双主数据一致性_MySQL双主一致性架构优化 | 架构师之路-阿里云开发者社区...
  7. leetcode947. Most Stones Removed with Same Row or Column
  8. 程序员该如何进行 SQL 数据库的优化?
  9. mysql 账户管理_MySql 账户管理
  10. 《具体数学》(二)和式
  11. transition使用
  12. Hikari数据库连接池泄露问题排查
  13. ih5连接mysql数据库_iH5高级教程:H5数据应用,多种数据的判断
  14. Android攻城狮Dialog
  15. 自己整理的英语一最终作文模板
  16. 【算法题解】Codeforces Round #817 (Div. 4)题解
  17. linux下ss工具简介
  18. 手机测试属于硬件测试还是软件测试6,红米手机的硬件测试的2种基本操作
  19. 使用cppcheck检查代码
  20. 【Python应用】tkinter简介

热门文章

  1. Linux-eval命令
  2. Android-广播
  3. ubuntu18.04+RTX 3090安装docker并配置pytorch环境
  4. keras(X_train, X_test, y_train, y_test)
  5. Linux学习笔记(6)
  6. caffe 实践程序3——caffe提取特征以及由模型test数据
  7. 基于LSTM的【气象数据+发电数据】多步时序数据建模预测分析实战
  8. 解决UnicodeEncodeError: 'gbk' codec can't encode character u'\u25aa' in position 344 : illegal multiby
  9. sublime text编辑器修改python代码的缩进设风格
  10. 面试必会 InnoDB的多版本并发控制(MVCC)