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

LeetCode之有效的括号

有效的括号

    • 思路
    • 解题


思路

借助栈解题,遍历字符数组,左括号进栈,右括号就与最近的栈顶元素比较,先看是不是为空栈,是则说明有多余的右括号,不是则正常比较,比之后出栈,才能和下一个栈里的元素比较,所有字符遍历完后还要判断栈是否为空,不为空说明有多余的左括号,空则是有效的括号。
//每次返回前都要销毁栈。

解题

typedefinttype;typedefstructStack{type*a;inttop;intcapacity;}stack;voidInit(stack*s){assert(s);s->a=NULL;s->top=0;//初始 0则代表top指向栈顶元素的下一个数据(可以当有效元素个数用),初始-1代表指向栈顶元素(可以当下标用)。s->capacity=0;}voidDestroy(stack*s){assert(s);assert(s->a);free(s->a);s->a=NULL;s->top=s->capacity=0;}voidCheck(stack*s){if(s->top==s->capacity){intnewcapacity=s->capacity==0?4:s->capacity*2;type*tmp=(type*)realloc(s->a,sizeof(type)*newcapacity);if(tmp==NULL){perror("realloc");exit(1);}s->a=tmp;s->capacity=newcapacity;}}voidPush(stack*s,type x){//不分头尾插入是因为只规定一端插入删除。assert(s);Check(s);s->a[s->top++]=x;}voidPop(stack*s){assert(s);assert(s->top>0);//要删除元素个数不能为0.s->top--;}typeTop(stack*s){assert(s);assert(s->top>0);returns->a[s->top-1];}boolEmpty(stack*s){assert(s);returns->top==0;}intNum(stack*s){assert(s);returns->top;}boolisValid(char*s){stack str;Init(&str);while(*s!='\0'){//遍历字符串if(*s=='('||*s=='{'||*s=='['){//左括号就进栈Push(&str,*s);}else{//右括号就和栈顶元素比较if(Empty(&str)){//如果栈空,说明有多余的右括号,就返回falseDestroy(&str);//返回前记得销毁栈returnfalse;}type top=Top(&str);Pop(&str);//每次和栈顶元素比较后都要出栈,才能和下一个栈顶元素比较if((top=='('&&*s!=')')||//不匹配(top=='{'&&*s!='}')||(top=='['&&*s!=']')){Destroy(&str);returnfalse;}}s++;}//如果有多余的左括号就返回false,没有就truebool ret=Empty(&str);Destroy(&str);returnret;}
http://www.jsqmd.com/news/529178/

相关文章:

  • OpenClaw高级技巧:nanobot多任务并行控制
  • FLUX 2 Klein加持!BFS换脸:高保真头脸替换新体验
  • Portal-Vue:突破组件树限制的跨DOM渲染技术全解析
  • OpenClaw 飞书机器人配置教程|一键对接飞书,实现聊天下达 AI 指令
  • 如何在浏览器中免费体验完整的三国杀游戏:无名杀终极指南
  • 直破 Android 17 大屏困局:Navigation 3 架构深度解析
  • Windows 11 23H2 搜狗输入法卸载后任务栏严重卡顿问题分析
  • MaaYuan:代号鸢与如鸢游戏自动化助手完整使用指南
  • Wan2.1-umt5快速开始:使用CSDN星图平台镜像一键启动
  • RePKG:3步解锁Wallpaper Engine壁纸资源的实用工具
  • Windows安装Pytorch3D(conda环境)
  • 如何快速获取抖音无水印视频:面向初学者的完整指南
  • 避坑指南:Cadence Allegro多逻辑器件设计中最容易忽略的5个细节(附箭头引脚处理技巧)
  • Video2X视频增强技术全解析:从像素修复到视觉革命
  • 告别手动对账!SAP F110自动付款后,如何用ABAP开发客户应收款的智能清账程序?
  • Jmeter压力测试指标详解
  • 黑丝空姐-造相Z-Turbo系统重装后恢复指南:快速重建Python与模型环境
  • 陕西保安怎么选?国盾(西安)保安以“复员军人”筑牢安全防线 - 深度智识库
  • 学术专著不用愁!AI专著生成工具,从构思到完稿全程护航
  • 2026年广州英国留学中介咨询推荐:五家优选深度解析 - 科技焦点
  • TCS3472 I²C驱动库:嵌入式高精度色彩传感实现指南
  • QKeyMapper:重新定义键盘与手柄控制的开源映射神器
  • 3、API 接口自动化测试详细图文教程学习系列3--相关Python基础知识2
  • 告别网盘视频播放困境:PotplayerPanVideo技术原理与全场景应用指南
  • 揭秘TinyExpr:轻量级嵌入式计算引擎的实战指南
  • 如何通过G-Helper高效解决华硕笔记本色彩配置丢失问题
  • 多维度视角下 Grok Vision Beta 与主流 AI 视觉工具竞争力对比报告
  • 【2026版】Spring Cloud Alibaba 速成笔记公开!
  • 导师推荐!盘点2026年顶流之选的AI论文网站
  • Z-Image-Turbo-辉夜巫女企业级应用:结合Dify打造无代码AI工作流