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;
}
}
K:括号分隔符匹配问题的更多相关文章
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 利用栈实现字符串中三种括号的匹配问题c++语言实现
编写一个算法,检查一个程序中的花括号,方括号和圆括号是否配对,若能够全部配对则返回1,否则返回0. Head.h: #ifndef HEAD_H_INCLUDED #define HEAD_H_INC ...
- 十 用栈解决LeetCode20题括号的匹配
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiIAAACWCAYAAADjcONgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjw
- 《Java数据结构与算法》笔记-CH4-3用栈实现分隔符匹配
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 利 ...
- OJ——华为编程题目:输入字符串括号是否匹配
package t0815; /* * 华为编程题目:输入字符串括号是否匹配 * 若都匹配输出为0,否则为1 * 样例输入:Terminal user [name | number (1)] * 样例 ...
- 【js数据结构】栈解决括号不匹配问题
栈可以用来判断一个算术表达式中的括号是否匹配. 思路:读取算术表达式,遇到左括号'{'.'['.'('压入栈,栈的特点是后入先出,所以当遇到右括号'}'.']'.')'的时候,取出栈顶元素,是否满足读 ...
- java实现括号的匹配
括号的匹配 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉 例如: -(-[-]-)- 是允许的 -(-[-)-]- 是禁止的 对于 mai ...
- 打印n对括号的全部有效组合(左右括号正确匹配)Java实现
一.问题导出 今天在做算法题目的时候遇到了一道左右括号匹配的问题,问题如下: 二.问题思考 (1)这种要列出全部可能性的题目很容易想到由小到大去发现规律,用递归或者暴力搜索. 首先1的情况,一个括号只 ...
- PHP 判断字符串括号是否匹配
<?php function aa($str) { $temp = array(); for ($i = 0; $i < strlen($str); $i++) { $t = $str[$ ...
随机推荐
- dbporxy-mysql 协议流转图
dbproxy 支持 in 查询, 当in 中的字段 属于不同的分表时, QPS约为 5000左右, 如果为 等值查询, qps的30000左右 主要原因是 对于in操作,会产生多个不同分表的sql ...
- urllib的使用
1.urllib 中的urlopen urllib.urlopen(url,data) 如果请求是json格式,则data是json.dumps(data_dict)形成的数据,注意,不能在进行url ...
- 【转载】MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每 ...
- mac下配置influxdb
influxdb 基本概念 参考:https://docs.influxdata.com/influxdb/v1.4/concepts/key_concepts 基本概念图: Database(绿色白 ...
- 对 ArrayList 进行分页.
/** * 测试分页 */ @Test public void testPage() { int bulkSize = 2; List<Integer> dataList = new Ar ...
- docker 限制 容器内存 使用
转载 : https://www.cnblogs.com/sparkdev/p/8032330.html 默认情况下容器使用的资源是不受限制的.也就是可以使用主机内核调度器所允许的最大资源.但是在容器 ...
- Numpy:np.vstack()&np.hstack() flat/flatten
一 . np.vstack: 按垂直方向(行顺序)堆叠数组构成一个新的数组 In[3]: import numpy as np In[4]: a = np.array([[1,2,3]]) a.sh ...
- Linux系统编程:进程控制
一.进程相关操作与编程对应函数 1.进程创建:两种方式来实现. ①fork:创建一个子进程,父子进程共享一份代码程序,但是各有一份独立的数据,为了效率和保持数据的独立采用写时复制技术(COW).运行无 ...
- Android中9-Patch图片之理解
在android中,不仅可以将扩展名为.png,.jpg,.gif的普通图片作为图片资源,而且可以将扩展名为.9.png的9-Patch图片作为图片资源.扩展名为.png,.jpg,.gif的普通图片 ...
- ZendStudio操作技巧
1.恢复窗口默认布局 点开菜单栏上的“windows”,出来的菜单中有个“Reset Perspective...”,点这个就行了