/*** 栈* 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. 人脸、人眼检测与跟踪
  2. 教你如何编写第一个爬虫
  3. 基于云上分布式NoSQL的海量气象数据存储和查询方案
  4. Scala中Manifest、ClassTag、TypeTag的学习
  5. 小米算法题判断直线相交
  6. SpringBoot整合spring-ws开发webservice接口(全流程详细教程)
  7. js 数组修改watch_前端面试:专注Vue.js常见的问题答疑,掌握了基本上Vue就过关了...
  8. 在soa工程中使用dubbo的步骤
  9. oracle数据库表空间文件收缩实例
  10. 逆向Android软件的步骤
  11. C语言中声明复数用什么字母,用c语言定义复数-20210407134457.docx-原创力文档
  12. python嵌套循环注意事项_python循环嵌套的几种使用方法
  13. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用【补充】
  14. P5444 [APIO2019]奇怪装置
  15. 这个时代,开发简单多了
  16. [转]FastJSON通过SerializeFilter定制序列化
  17. 网课学习:PDF阅读器,Blumind思维导图
  18. HackMyvm(六)Noob持续更新
  19. 微信小程序实现服务通知 模板消息详解(附源码)
  20. java date类 时区_Java Date 与时区

热门文章

  1. python切片为列表增加元素_python – 使用切片语法来加入列表的一部分列表元素...
  2. windows 和 ubuntu服务器之间用Xshell互传文件
  3. 图卷积网络的半监督学习脉络
  4. python数字图像处理(8):对比度与亮度调整
  5. python实现阿拉伯数字和罗马数字的互相转换
  6. JavaScript输出数组中有几个字符串中包含“a”或“A”
  7. 机器学习 python 随机抽样random sampling 代码
  8. chainmaker go.mod no such file or directory
  9. crash fault-tolerant protocols和Byzantine fault-tolerant protocols区别
  10. Hyperledger Fabric教程(14)--动态添加组织的步骤