当前位置: 首页 > news >正文

每日一题---有效的括号问题

文章目录

  • 前言
  • 1.题目以及分析
  • 2.参考代码


前言

前面我们学习了栈的相关操作,现在我们做一道题,进行巩固
Leetcode—有效的括号


1.题目以及分析

在这里插入图片描述
这道题就可以使用进行操作,因为把最左边的括号当成栈底,最右边的是栈顶,其中每种左括号(例如{,(,[ )),进行入栈,把右括号(例如( },),] ))这些跟前面的括号进行匹配,如果没有匹配上,那就是false。
最后,判断时候有多余的括号,然后再返回。

2.参考代码

typedef struct Stack{char*arr;int top;int capacity;
}Stack;
void StackInit(Stack *ps){ps->arr=NULL;ps->top=ps->capacity=0;
}
void StackDestory(Stack*ps){free(ps->arr);ps->arr=NULL;ps->top=ps->capacity=0;
}
void StackPush(Stack *ps,char x){if(ps->capacity==ps->top){int newCapacity=ps->capacity==0?4:2*ps->capacity*sizeof(int);char*tmp=(char*)realloc(ps->arr,newCapacity*sizeof(char));ps->arr=tmp;ps->capacity=newCapacity;}ps->arr[ps->top]=x;ps->top++;
}
bool StackEmpty(Stack*ps){return ps->top==0;
}
void StackPop(Stack*ps){ps->top--;
}
char StackTop(Stack*ps){return ps->arr[ps->top-1];
}
bool isValid(char* s) {Stack sk;StackInit(&sk);while(*s){if(*s=='['||*s=='{'||*s=='('){StackPush(&sk,*s);}else{if(StackEmpty(&sk)){StackDestory(&sk);return false;}char top=StackTop(&sk);StackPop(&sk);if((top=='{'&&*s!='}')||(top=='['&&*s!=']')||(top=='('&&*s!=')')){StackDestory(&sk);return false;}}s++;}bool ret=StackEmpty(&sk);StackDestory(&sk);return ret;
}

相关文章:

  • 双指针用法练习题(2024/5/26)
  • 通过unsplash引入图片素材
  • 小程序的深层了解
  • React 如何自定义 Hooks
  • Win11禁用数字强制签名:解放硬件选择,自由安装应用
  • CasaOS系统玩客云安装内网穿透工具实现无公网IP远程访问
  • 内存函数详解,包含部分字符串函数
  • 深入理解python列表与字典:数据结构的选择与性能差异
  • 07、SpringBoot 源码分析 - SpringApplication启动流程七
  • 入门五(项目介绍及登录和发布需求)
  • k8s 创建 LoadBalancer 类型的 svc
  • python数据分析-CO2排放分析
  • 安卓开发--安卓使用Echatrs绘制折线图
  • 二.对配置文件中数据库密码进行加密
  • Java 为什么使用泛型
  • [deviceone开发]-do_Webview的基本示例
  • [译]Python中的类属性与实例属性的区别
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • express.js的介绍及使用
  • JS 面试题总结
  • JS函数式编程 数组部分风格 ES6版
  • springboot_database项目介绍
  • supervisor 永不挂掉的进程 安装以及使用
  • 安卓应用性能调试和优化经验分享
  • 成为一名优秀的Developer的书单
  • 分布式任务队列Celery
  • 分享一份非常强势的Android面试题
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 阿里云服务器如何修改远程端口?
  • ​马来语翻译中文去哪比较好?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (CPU/GPU)粒子继承贴图颜色发射
  • (第61天)多租户架构(CDB/PDB)
  • (独孤九剑)--文件系统
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (接口自动化)Python3操作MySQL数据库
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .Net语言中的StringBuilder:入门到精通
  • .vimrc 配置项
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ 蓝桥杯Web真题 ]-布局切换
  • [100天算法】-实现 strStr()(day 52)
  • [20140403]查询是否产生日志
  • [20180224]expdp query 写法问题.txt
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured