后端开发刷题 | 有效括号序列【栈】

news/2024/9/24 12:23:30/

描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

数据范围:字符串长度0≤n≤10000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:

"["

返回值:

false

复制

示例2

输入:

"[]"

返回值:

true

思路分析:

这里可以使用栈,根据栈的先进后出,后进先出的特点,来存储半边的括号,当出现左括号,向栈中压入右括号,然后比较栈中压入的右括号与字符串中当前的括号相比,来判断括号是否成双成对。

代码:

java">import java.util.*;public class Solution {/*** * @param s string字符串 * @return bool布尔型*/public boolean isValid (String s) {// write code hereStack<Character> stack=new Stack<Character>();//将字符串转换为字符数组char[] c=s.toCharArray();for(int i=0;i<c.length;i++){if(c[i]=='('){stack.push(')');}else if(c[i]=='['){stack.push(']');}else if(c[i]=='{'){stack.push('}');}else if(stack.isEmpty()||stack.pop()!=c[i]){//如果栈为空或者栈压出的元素不是该符号,则说明不是成双成对的括号//这里一个小技巧就是,只要stack.isEmpty()为false,那么一定会去判断stack.pop()!=c[i],就会执行栈压出的操作return false;}}//最后判断压入栈中的元素是否全部比较完成,是则返回true,还有剩余则说明有括号没有配对return stack.isEmpty();}
}


http://www.ppmy.cn/news/1514455.html

相关文章

【数据结构】汇总八、排序算法

排序Sort 【注意】本章是 排序 的知识点汇总&#xff0c;全文1万多字&#xff0c;含有大量代码和图片&#xff0c;建议点赞收藏&#xff08;doge.png&#xff09;&#xff01;&#xff01; 【注意】在这一章&#xff0c;记录就是数据的意思。 排序可视化网站&#xff1a; D…

3D 打印的突破:热引发剂在立体光刻中的应用

在当今科技飞速发展的时代&#xff0c;3D打印技术作为一项具有创新性和颠覆性的技术&#xff0c;正不断改变着我们的生产和生活方式。今天&#xff0c;向大家介绍的是一项关于3D打印的重要研究成果《3D printing by stereolithography using thermal initiators》发表于《Natur…

算法的学习笔记—二叉树中和为某一值的路径

&#x1f600;前言 在二叉树中寻找和为某一特定值的路径问题是一个经典的面试题&#xff0c;考察了对二叉树的遍历能力以及递归和回溯算法的理解和应用。本文将详细解析这一问题&#xff0c;并提供一个Java实现。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#x1…

鸿蒙(API 12 Beta3版)【使用ImageSource完成图片解码】图片开发指导

图片解码指将所支持格式的存档图片解码成统一的[PixelMap]&#xff0c;以便在应用或系统中进行图片显示或[图片处理]。当前支持的存档图片格式包括JPEG、PNG、GIF、WebP、BMP、SVG、ICO、DNG。 开发步骤 全局导入Image模块。 import { image } from kit.ImageKit;获取图片。…

使用 Apache POI 的 DataFormatter 处理 Excel 数据

在处理 Excel 文件时&#xff0c;确保正确格式化和读取数据是一个常见的需求。Apache POI 是一个强大的 Java 库&#xff0c;可以用来读写 Microsoft Office 格式的文件&#xff0c;包括 Excel。本文将介绍如何使用 Apache POI 的 DataFormatter 类来简化数据的格式化和读取过程…

php生成json字符串,python解析json字符串

<?php $nodes []; $_tmp[title] 标题1; $_tmp[titlekey] actt; $_tmp[child] [acww.zip, acww21.zip, tta.zip]; $nodes[] $_tmp;$_tmp2[title] 标题2; $_tmp2[titlekey] kfij; $_tmp2[child] [KL7SHR47.zip, fdgfdg.zip, qweqw.zip]; $nodes[] $_tmp2;// 构建调用…

MacOS升级ruby版本

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 升级Ruby版本在MacOS上相对简单&#xff0c;但需要一些基础的命令行知识。本文将详细介绍如何在MacOS上升级Ruby版本&#xff0c;包括使用常见的版本管理工具、解决可能遇到的问题、以及确保你的环境配置不会受到影响。…

B/S架构和C/S架构的区别

B/S架构、C/S架构区别 1. B/S架构 1.1 什么是B/S架构 B/S架构的全称为Browser/Server&#xff0c;即浏览器/服务器结构。Browser指的是Web浏览器&#xff0c;极少数事务逻辑在前端实现&#xff0c;但主要事务逻辑在服务器端实现。B/S架构的系统无须特别安装&#xff0c;只需要…