`

判断一个数学表达式中的括号是否匹配

阅读更多
使用stack,使得这个操作变得相当的简单。

package com.java.util;

import java.util.Stack;

public class MyStack {
	public static boolean check(String input){
		Stack<Character> stack = new Stack<Character>();
		for(int i=0;i<input.length();i++){
			char ch = input.charAt(i);
			switch(ch){
				case '{':	case '[':	case '(':
					stack.push(ch);
					break;
				case '}':	case ']':	case ')':
					if(!stack.isEmpty()){//[]](){}
						char chx = stack.pop();
						if(ch == '}' && chx != '{' 
							|| (ch == ']' && chx != '[') 
							|| (ch == ')' && chx != '(')){
							return false;
						}
					}else{//[](){})
						return false;
					}
					break;
				default:
					break;
			}
		}
		if(!stack.isEmpty()){//[](){}(
			return false;
		}
		
		return true;
	}
	public static void main(String[] args) {
		String input = "[wer]()asdf{adsf}";
		System.out.println(MyStack.check(input));
	}

}


分享到:
评论

相关推荐

    表达式的括号匹配检验问题

    本问题旨在设计一个程序,该程序能够检查给定表达式中的括号是否正确配对。具体来说,表达式中包含三种类型的括号:圆括号`()`、方括号`[]`和花括号`{}`。这些括号可以任意嵌套,并且必须成对出现。 #### 二、问题...

    设计算法判断一个算术表达式的圆括号是否配对

    ### 设计算法判断一个算术表达式的圆括号是否配对 #### 背景介绍 在编程语言中,括号被广泛用于控制程序的执行流程、定义函数参数以及表示数学表达式等。其中,圆括号(即“()”)是最常见的一种。正确匹配的圆括号...

    数据结构判断表达式3种括号匹配

    括号匹配通常用于检查数学或编程语言中的表达式是否有效,确保每个开启的括号都有对应的关闭括号。 在给定的描述中,我们面临的是一个扩展的括号匹配问题,不仅包括常见的圆括号 "()",还包括方括号 "[]" 和大括号 ...

    PHP判断表达式中括号是否匹配的简单实例

    括号匹配问题是指在给定的字符串中,每个开括号 '(' 都有一个相对应的闭括号 ')',并且它们的顺序是正确的。错误的括号匹配通常有两种情况:一种是缺少相对应的闭括号,另一种是存在未匹配的开括号。在编程中,这个...

    用栈实现的括号匹配

    在这个示例中,`isMatch`函数实现了括号匹配的逻辑,`main`函数负责获取用户输入并调用`isMatch`进行判断。注意,此示例仅处理了三种基本的括号类型,并假设输入字符串只包含括号。在实际应用中,可能需要处理更复杂...

    表达式括号匹配配对判断实验报告(内附源代码)

    在提供的"表达式括号匹配配对判断.cpp"源代码中,我们可以看到一个典型的C++实现。代码可能包括以下步骤: 1. 初始化一个空栈。 2. 遍历输入的括号序列。 3. 对于每个遍历到的字符,如果它是开括号,则压入栈中;...

    c++数学表达式解析

    在C++编程中,实现一个数学表达式解析器是一项常见的任务,它允许程序处理和求解用户输入的数学表达式。本项目旨在提供一个简单易懂的C++计算器实现,支持括号和基本的四则运算(加、减、乘、除)。通过使用波兰...

    栈的应用 括号匹配,计算器,中缀表达式转换为后缀表达式

    利用栈可以高效地检查一个字符串中的括号是否匹配。遍历字符串,遇到左括号就入栈,遇到右括号时检查栈顶元素是否为其对应的左括号,是则弹出栈顶元素,否则表示括号不匹配。遍历结束后,如果栈为空,说明括号匹配...

    括号匹配括号匹配括号匹配

    词法分析器(lexer)将源代码分解成一个个符号(tokens),而语法分析器(parser)则根据语法规则判断这些符号序列是否合法,其中括号匹配是关键一环。对于想深入学习编译原理的人来说,理解这一过程至关重要。

    数据结构中的括号匹配算法 C语言版

    括号匹配通常出现在编程语言解析、编译器设计、文本处理和数学表达式计算等场景中。它涉及到如何检查一个字符串中的左右括号是否正确配对。这里我们将详细讨论括号匹配的算法及其C语言实现。 首先,我们要明确什么...

    回文判断,括号匹配,数制转换

    其次,**括号匹配**是计算机科学中的经典问题,通常用于检查一段文本(比如数学表达式或XML/HTML代码)中的左括号(如"("、"[", "{")是否都有相应的右括号与之对应。这个问题可以使用栈来解决。遍历输入字符串,...

    设计一个算法判定一个算术表达式中的圆括号是否正确配....doc

    根据给定文件的部分内容,我们可以明确任务目标是设计一个算法来判断算术表达式中的圆括号是否正确配对,并且给出了一个利用顺序栈(数组实现的栈)的具体示例代码。下面将详细阐述该算法的设计思路、核心原理以及...

    括号匹配判断

    2. **括号匹配**:在数学表达式或编程语言中,括号用于定义操作的优先级。为了保证表达式的正确性,括号必须正确地成对出现且顺序正确。例如,`{( )}` 是正确的括号匹配序列,而 `{( )}]` 则不是。 3. **算法实现**...

    C++实现栈的括号匹配

    本程序包含 栈体:用来保存数据项的内存空间; 栈顶指示器:用来指示栈顶数据项; 栈操作: 压栈操作(push):把数据项从栈顶压入栈内,移动栈顶指示...判断一个数学表达式中的括号(包括圆括号和方括号)是否配对。

    简单编译器(括号匹配)__(源码+设计报告)

    本文将详细阐述如何使用C++编写一个简单的编译器,以实现对输入的语句或数学表达式进行括号匹配的检查。 一、编译器基础 编译器由多个阶段组成,包括词法分析、语法分析、语义分析和代码生成。在我们的简单编译器...

    顺序栈实现括号配对

    例如,在一个数学表达式中,我们可以使用小括号、中括号和大括号来表示不同的操作优先级。然而,在实际应用中,我们需要判断这些括号是否正确地配对,以确保表达式的正确性。 为了解决这个问题,我们可以使用顺序栈...

    易语言括号匹配算法

    括号匹配算法主要是检查文本中的括号是否正确配对,例如在数学表达式、代码或XML/JSON文档中。 括号匹配的基本思想是使用栈(Stack)数据结构来辅助完成。栈是一种后进先出(LIFO)的数据结构,非常适合用来解决这...

    括号匹配栈的应用

    括号匹配是计算机科学中一个基础且重要的概念,特别是在编译原理、解析技术和算法设计中。这个主题主要关注如何正确地验证一个字符串中左括号(如"{", "(", "[")与右括号("}", ")", "]")的配对性。在本篇文章中,...

    数据结构括号匹配

    括号匹配问题是指判断一段文本中的括号是否正确配对。例如,在编程语言中,确保函数调用或表达式中的括号是成对出现的非常重要。本例中的算法主要处理了以下六种类型的括号:圆括号 `()`, 方括号 `[]`, 尖括号 `&lt;&gt;`,...

    栈的应用——括号的匹配

    括号匹配问题源于我们日常编程中的表达式或代码块,例如在数学公式、JSON、XML等格式中,我们经常遇到各种类型的括号,如圆括号"()"、方括号"[]"和大括号"{}"。正确匹配这些括号是确保程序语法正确性的基础。 首先...

Global site tag (gtag.js) - Google Analytics