首页 > 编程语言 >面试编程题拾遗(05) --- 括号匹配检查

面试编程题拾遗(05) --- 括号匹配检查

时间:2023-06-20 13:03:29浏览次数:36  
标签:ch false String 05 isValid 编程 System --- 括号


题目:一个表达式字符串中包含了‘(’,')','[',']','{','}'六种括号,判断这些括号是否匹配。

解决这个问题可以使用一种叫“栈”的数据结构,它是一种FILO(先进后出)的结构,插入(push,入栈)和删除(pop,出栈)元素都是在栈顶进行。代码如下所示:

import java.util.Stack;

public class Test05 {

	public static boolean isValid(String exp) {
		String left = "([{";
		String right = ")]}";
		Stack<Character> s = new Stack<Character>();
		for (int i = 0, len = exp.length(); i < len; i++) {
			char ch = exp.charAt(i);
			if (left.indexOf(ch) != -1) {
				s.push(ch);
			}
			else if (right.indexOf(ch) != -1) {
				if (!s.isEmpty()) {
					char temp = s.pop();
					if (ch != right.charAt(left.indexOf(temp))) {
						return false;
					}
				}
				else {
					return false;
				}
			}
		}
		return s.isEmpty();
	}

	public static void main(String[] args) {
		System.out.println(isValid("([()]{})"));
		System.out.println(isValid("((){}"));
		System.out.println(isValid("[{)()]"));
	}
}


第一个表达式括号匹配输出true,后面两个都是false

标签:ch,false,String,05,isValid,编程,System,---,括号
From: https://blog.51cto.com/u_16166070/6521810

相关文章

  • JavaScript(07): 实例3---Google Eye
    下面的例子源于GoogleEye(如下图所示的效果),通过这个例子可以好好体会一下JavaScript的面向对象编程。<!DOCTYPEhtml><html> <head> <title>GoogleEye</title> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <st......
  • 数据结构和算法系列课程(02) --- 线性表和贪吃蛇
    线性结构是一种具有以下特点的结构:存在唯一一个被称为“第一个”的数据元素存在唯一一个被称为“最后一个”的数据元素除第一个元素之外,集合中的每个元素均有且仅有一个前驱除最后一个元素之外,集合中的每个元素均有且仅有一个后继那么,线性表、栈、队列、数组、字符串都可以......
  • 数据结构和算法系列课程(01)--- 排序二叉树和红黑树
    把排序二叉树放在这个系列课程的第一个部分似乎有些唐突,但是考虑到它在面试中出现的可能性,把它放在这样的一个位置也就不足为奇了。关于树和二叉树的基础知识,可以到下面的链接中下载我的课件进行了解。下面给出一个排序二叉树的Java实现:packagcom.loonstudio;/***排序二叉树......
  • 一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式
    直接看例子吧:usingSystem;usingSystem.Windows.Forms;usingSystem.Threading;namespaceCom.LoonStudio.Example{publicclassCar{//定义一个汽车事件的委托publicdelegatevoidCarEventHandler(stringmsg);//定义加速事件......
  • [连载]C#程序设计(05)--- C#核心编程-3 --- 表达式和运算符
    ......
  • [连载]C#程序设计(09)--- 类和对象
    ......
  • Java面试题集(51-70)
    Java程序员面试题集(51-70)摘要:这一部分主要讲解了异常、多线程、容器和I/O的相关面试题。首先,异常机制提供了一种在不打乱原有业务逻辑的前提下,把程序在运行时可能出现的状况处理掉的优雅的解决方案,同时也是面向对象的解决方案。而Java的线程模型是建立在共享的、默认的可见的可变状......
  • 虚拟主机使用记录-20230620
    三丰云提供的免费虚拟主机和免费云服务器对于学生和初学者来说非常有吸引力,并且易于使用。同时,三丰云也提供付费计划,可以为更高级别的用户提供更多资源和功能支持。需要注意的是,免费服务通常会受到一些限制和局限性。因此,在选择免费主机或云服务器时,需要根据实际需求进行评估,以确保......
  • git --date时间显示设置格式命令
    git --date 显示与当前时间相关的日期relativelocaldefaultisorfcshortraw--date=relative显示用户本地时区中的时间戳。 --date=local(or--date=iso)以ISO8601格式显示时间戳。 --date=iso8601(or--date=rfc)以RFC2822格式显示时间戳,通常在电子邮件中找......
  • vue学习过程中 遇到的问题 CSS塌陷 ----- 高度塌陷和外边距塌陷
    1、高度塌陷原因:父元素没有设置高度,子元素设置浮动属性(float:left)之后,父元素的高度为0.***<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge">......