K:括号分隔符匹配问题
相关介绍:
括号分隔符匹配问题是指,判断所输入的字符串表达式中的括号是否匹配的问题,例如1+(12+2)*(1+2)便是一个括号分隔符匹配的表达式,而(12+1)*4+(12/2]就是一个括号分隔符不匹配的表达式
判断一个表达式括号分隔符是否匹配,其思路如下:依次读取该表达式中的相关字符,如果为数字或者运算符则继续读取下一个字符,当为左括号的时候,将其压入栈中,当为右括号的时候,弹出栈顶元素,查看是否是右括号所匹配的左括号类型,如果不是则该表达式不是括号匹配的,否则,重复以上步骤,直至表达式中的每个字符遍历完成,当遍历完成的时候,若栈中元素不为空,则是括号不匹配的,否则是括号匹配的。
相关代码如下:
package queueandstack;import java.util.Scanner;/*** 该类用于实现对括号的匹配问题的操作* 用于判断输入的括号是否匹配的问题* @author 学徒**/public class Match
{public void matchesSymbol() {boolean match=false;Stack<String> stack=new Stack<String>();System.out.print("请输入一系列括号:");String inputString=null;while(true){inputString=getInputString();if(inputString==null||deleteBlank(inputString).equals("")){System.out.print("请输入一系列括号:");continue;}else{break;}}//去除空字符inputString=deleteBlank(inputString);//当括号成对出现的时候if(inputString.length()%2==0){match=true;for(int i=0;i<inputString.length();i++){//当为左括号时,将其压入栈中,否则将从栈中弹出if(String.valueOf(inputString.charAt(i)).matches("[((\\[{【]")){stack.push(String.valueOf(inputString.charAt(i)));}else{if(!stack.isEmpty()){String value=stack.pop();}else{match=false;break;}}}}if(!match||!stack.isEmpty()){System.out.println("括号不匹配");}else{System.out.println("括号匹配成功");}}//该方法用于获得输入的字符串private String getInputString(){Scanner in =new Scanner(System.in);String str=null;if(in.hasNextLine()){str=in.nextLine();}return str;}//该方法用于对输入的字符串进行去除空字符的处理private String deleteBlank(String inputString){inputString=inputString.replaceAll(" ", "");return inputString;}
}
回到目录|·(工)·)
转载于:https://www.cnblogs.com/MyStringIsNotNull/p/8206830.html
K:括号分隔符匹配问题相关推荐
- 第2关:利用栈判断字符串括号是否匹配
#ifndef stack__h #define stack__h#include <stdio.h> #include <stdlib.h>typedef char T; / ...
- python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡
栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...
- LeetCode Valid Parentheses(判断括号是否匹配)
题意:给出(,[,{,),],}括号组成的字符串, 判断括号是否匹配 思路:用栈结构判断 1.如果是(,[,{,将其入栈 2.如果遇到),],},看栈是否为空.栈顶元素是否对应为(,[,{ 3.将字符 ...
- 数据结构算法——判断表达式中的括号是否匹配
元旦三天假,闲着没事干,就想着复习一下学数据结构时的那些算法吧.本来是想用C语言来写的,无奈啊,三四年没用C了,基本上忘光光,还是用C#来写吧,而且.Net基类库中已经有了栈.队列等的实现,直接拿来用 ...
- 判断字符串中的括号是否匹配——c和c++实现
判断字符串中的括号是否匹配 递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配-- 代码如下: #include <stdio.h> #include & ...
- java小编程----括号是否匹配
错误示例::: 当 String s = "...(...[....]....{...}...)...(.[..).."; 应输出3 package com.henu.ji ...
- python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...
算法 数据结构 数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题 在平时写程序当中,我们会经常遇到程序当中括号的匹配问题,也就是在程序当中左括号的数量和右括号的数量必须相等.如 ...
- 如何判定括号是否匹配
如何判定括号是否匹配 package p1;import java.util.Stack;public class Demo07 {public static boolean isGoodBracke ...
- 数据结构上机实践第五周项目3 - 括号的匹配
括号的匹配 本次实践将用到顺序栈的算法库,点击此处参考. 本次实践要求: 假设表达式中允许三种括号:圆括号.方括号和大括号.编写一个算法,判断表达式中的各种左括号是否与右括号匹配. 例如,输入2+( ...
最新文章
- 《游戏程序设计模式》 1.4 - 原型模式
- word经常用到的技巧
- 常见的原生javascript DOM操作
- ADO.NET 基础学习笔记1
- Docker中运行命令时提示:Cannot connect to the Docker daemony...以及设置docker开机启动
- TCP三次握手及其背后的缺陷
- 罗永浩吐槽卖小米、苹果被骂,卖华为也被骂,李楠:警惕键盘侠
- 三言两语话敏捷(2) - 持续集成
- ThinkPHP文件上传类的使用
- Delphi应用程序的调试(十)调试器选项
- Java笔记(1)黑马刘意_Java入门_2019_idea版
- 【2018黑龙江省赛】UPC-7222 Overflow(模拟物理水体积)
- 我的世界网易绘梦师国服 物品材料介绍
- 游戏开发中常用的算法1(20道题一篇文章)
- Linux常用命令学习-base64
- LSF_安装(UNIX or Linux)
- faker和劫的图片_这张图影响了LOL玩家多年,劫的新皮肤首次摘下面具
- Mysql和 ClickHouse计算时间函数的差值的区别(dateDiff和TIMESTAMPDIFF)
- 小心!手机这样充电被1秒窃取信息!
- mysql的in和exist的区别