【leetcode】20. 有效的括号

有效的括号 题目链接
在这里插入图片描述

// 栈结构
typedef char valuetype;
typedef struct {valuetype* arr;int top;int capacity;
} Stack;void Init(Stack* stack);void Push(Stack* stack, valuetype value);
void Pop(Stack* stack);valuetype Top(Stack* stack);
int Size(Stack* stack);
bool Empty(Stack* stack);void Destroy(Stack* stack);bool isValid(char* s) {Stack stack;Init(&stack);while (*s) {if (*s == '(' || *s == '[' || *s == '{') {Push(&stack, *s); // 1.左括号入栈;}else { // 2.比较。if (Empty(&stack)) { // 2.1右括号比左括号多Destroy(&stack);return false;}else { // 2.2 比较左括号与右括号是否匹配char ch = Top(&stack);Pop(&stack);if ((ch == '(' && *s != ')') ||(ch == '[' && *s != ']') ||(ch == '{' && *s != '}')) {Destroy(&stack);return false;}}}s++;}// 如果栈里还剩有括号,说明左右括号没有对应bool res = Empty(&stack);Destroy(&stack);return res;
}void Init(Stack* stack) {assert(stack);stack->arr = NULL;stack->capacity = stack->top = 0;
}void Push(Stack* stack, valuetype value) {assert(stack);if (stack->top == stack->capacity) {stack->capacity = stack->capacity == 0 ? 10 : (int)(stack->capacity * 1.5);stack->arr = (valuetype*)realloc(stack->arr, sizeof(valuetype) * stack->capacity);if (stack->arr == NULL) {perror("realloc failed in the function Push(Stack*, valuetype).");return;}}stack->arr[stack->top++] = value;
}void Pop(Stack* stack) {assert(stack && stack->top > 0);stack->top--;
}valuetype Top(Stack* stack) {assert(stack && stack->top > 0);return stack->arr[stack->top - 1];
}int Size(Stack* stack) {assert(stack);return stack->top;
}bool Empty(Stack* stack) {assert(stack);return stack->top == 0;
}void Destroy(Stack* stack) {assert(stack);free(stack->arr);stack->arr = NULL;stack->capacity = stack->top = 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/249569.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:构建自定义分析器指南

在本博客中,我们将介绍不同的内置字符过滤器、分词器和分词过滤器,以及如何创建适合我们需求的自定义分析器。更多关于分析器的知识,请详细阅读文章: 开始使用 Elasticsearch (3) Elasticsearch: analyzer…

jenkins部署(docker)

docker部署,避免安装tomcat 1.拉镜像 docker pull jenkins/jenkins2.宿主机创建文件夹 mkdir -p /lzp/jenkins_home chmod 777 /lzp/jenkins_home/3.启动容器 docker run -d -p 49001:8080 -p 49000:50000 --privilegedtrue -v /lzp/jenkins_home:/var/jenkins_…

【HarmonyOS应用开发】ArkUI 开发框架-进阶篇-管理组件状态(九)

管理组件状态 一、概述 在应用中,界面通常都是动态的。下图所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 Ar…

CapCut - 剪映国际版11.0.0

【应用名称】:CapCut - 剪映国际版 【适用平台】:#Android 【软件标签】:#CapCut #剪映国际版 【应用版本】:11.0.0 【应用大小】:231MB 【软件说明】:软件升级更新。目前大家广泛使用的最令人惊叹、最专业…

NoSQL数据库简介

NoSQL数据库简介 Brief Introduction to NoSQL Databases By JacksonML 1. 什么是SQL? 在了解NoSQL之前,先简要介绍一下SQL。 SQL是 Structured Query Language(结构化查询语言)的缩写。 SQL在关系型数据中广泛使用&#xf…

shell - 免交互

一.Here Document 免交互 1. 交互的概念 交互:当计算机播放某多媒体程序的时候,编程人员可以发出指令控制该程序的运行,而不是程序单方面执行下去,程序在接受到编程人员相应的指令后而相应地做出反应。 对于Linux操作系统中&…

Prometheus+grafana配置监控系统

使用docker compose安装 方便拓展, 配置信息都放在在 /docker/prometheus 目录下 1.目录结构如下 . ├── conf │ └── prometheus.yml ├── grafana_data ├── prometheus_data └── prometheus_grafana.yaml2.创建目录文件 mkdir /docker/prometheus &&am…

2024 springboot Mybatis-flex 打包出错

Mybatis-flex官网:快速开始 - MyBatis-Flex 官方网站 从 Mybatis-flex官网获取模板后,加入自己的项目内容想打包确保错,先试试一下方法 这里改成skip的默认是true改成false,再次打包就可以了

Unix环境高级编程-学习-04-匿名管道PIPE

目录 一、环境 二、介绍 三、C标准函数介绍 1、pipe 2、popen 3、pclose 4、注意 四、宏 五、常见的管道用法 1、一对一(父进程读子进程写一条管道) 2、一对一(父进程写子进程读一条管道) 3、一对多(父进程…

Windows Qt C++ VTK 绘制三维曲线

Qt 自带数据可视化从文档上看,只能实现三维曲面。 QwtPlot3D在Qt6.6.0上没编译通过。 QCustomPlot 只能搞二维。 VTK~搞起。抄官网demo。 后续需求: 1、对数轴 2、Y轴逆序 3、Z轴值给色带,类似等高线图的色带 期待各位大佬多多指导。…

vue前端页面时间显示问题解决方法

解决方法&#xff0c; <template slot-scope"scope"><span>{{ parseTime(scope.row.boxClosingOnlineTime, {y}-{m}-{d} {h}:{i}:{s}) }}</span> </template> 刷新页面&#xff1a; 此外&#xff0c;使用JsonFormat(pattern "yyyy-M…

C++ 哈希 开放定址法

哈希算法 哈希&#xff0c;是一种算法思想吗&#xff0c;它的核心是映射&#xff0c;哈希方法中使用的转换函数称为哈希(散列)函数&#xff0c;构造出来的结构称为哈希表(Hash Table)(或者称散列表) 在STL 中&#xff0c;提供了两个使用哈希底层实现的容器 unordered_set 和 …

【C++干货铺】哈希结构在C++中的应用

目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 1.unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6. unordered_map的修改操作 7. unordered_map的桶操作 底层结构 …

【unity小技巧】FPS简单的射击换挡瞄准动画控制

文章目录 射击动画控制换弹动画瞄准动画完结 射击动画控制 换弹动画 调用 瞄准动画 问题&#xff1a;瞄准时&#xff0c;但是动画会卡住&#xff0c;不会播放瞄准的待机动画 修改 调用 动画如果太快可以去修改播放速度 播放速度变慢了&#xff0c;可能导致切换待机动画也…

CS144--Chapter0--wsl2+docker环境搭建

我的笔记本配置 荣耀magicbook16&#xff0c;容量是500G&#xff0c;芯片是R7-5800 由于笔记本容量较小&#xff0c;因此考虑这个方案&#xff0c;对于台式机用户&#xff0c;建议可以直接用虚拟机或者双系统。 前言 斯坦福官网给出的方法是用他们的镜像&#xff08;基于Ubu…

Message Queue --- RabbitMQ

MessageQueue Intro 什么是MQ为什么使用MQ常见的MQ 什么是MQ MQ全称是Message Queue&#xff0c;消息的队列&#xff0c;因为是队列&#xff0c;所以遵循FIFO 先进先出的原则&#xff0c;它是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff0c;M…

2024程序员的未来方向如何走?还看今朝

这几年的IT行业想必大家已经感受到了&#xff0c;Android、Java、前端等等程序员都经历了大厂裁员、小厂倒闭、找不到工作、毕业即失业的情况。大量失业是必然的&#xff0c;因为互联网公司都逐渐走向统一标准化&#xff0c;只剩下头部的一些大厂&#xff0c;所以市场需求少了。…

Spring实现事务(一)

Spring事务 .什么是事务事务的操作Spring中事务的实现准备工作创建表创建项目,引入Spring Web, Mybatis, mysql等依赖配置文件实体类 编程式事务(手动写代码操作事务)声明式事务(利用注解自动开启和提交事务) . 什么是事务 事务是⼀组操作的集合, 是⼀个不可分割的操作 在我们…

安装并开始设置 Windows 终端(命令提示符或Windows PowerShell或Azure Cloud Shell)

安装 安装 若要试用最新的预览功能&#xff0c;可能还需要安装 Windows 终端预览。 ‼️备注 如果你无法访问 Microsoft Store&#xff0c;GitHub 发布页上发布有内部版本。 如果从 GitHub 安装&#xff0c;Windows 终端将不会自动更新为新版本。 有关使用包管理器&#xff…

Qt QScrollArea 不显示滚动条 不滚动

使用QScrollArea时&#xff0c;发现添加的控件超出QScrollArea 并没有显示&#xff0c;且没有滚动条效果 原因是 scrollArea指的是scrollArea控件本身的大小&#xff0c;肉眼能看到的外形尺寸。 scrollAreaWidgetContents指的是scrollArea控件内部的显示区域&#xff0c;里面可…