LeetCode 20.有效的括号 C写法

news/2024/8/21 0:23:00 标签: leetcode, c语言, 开发语言, 数据结构, 算法

LeetCode 20.有效的括号 C写法

image-20240715192544611

思路🧐:

​   这题最优思路是用来进行匹配,如果是左括号入栈,如果是右括号那么左括号出栈去匹配,匹配成功就继续入栈或者出栈,匹配失败则字符串无效。不过C语言没有STL库,所以我们要手写一个栈(栈代码都在该篇博客中)出来。

代码🔎:

bool isValid(char * s){
        ST st; // 注意这里要把数据类型更改成char
        StackInit(&st);
        while(*s)
        {
             //左括号入栈
            if(*s == '[' || *s == '(' || *s == '{')
            {
                StackPush(&st, *s);
                ++s;
            }
            else
            {
                if(StackEmpty(&st)) //没有左括号的情况,出不了栈
                {
                    StackDestory(&st); //防止内存泄漏
                    return false;
                }
                char top = StackTop(&st); //取栈顶的符号
                StackPop(&st); //出栈
                if((*s == ']' && top !='[') 
                || (*s == ')' && top != '(')
                || (*s == '}' && top != '{')) //结束的条件,不匹配直接结束
                {
                    StackDestory(&st);
                    return false;
                }
                else
                {
                    ++s;
                }
            }
        }
        bool ret = StackEmpty(&st);  //防止全是左括号凑巧走到最后一步的情况
        StackDestory(&st);
        return ret;
}

image-20240715203107892


http://www.niftyadmin.cn/n/5555727.html

相关文章

【通信协议-RTCM】系统参数消息 ---- 对应RTCM十六进制 编码ID(3F5)

1. 1013型消息的内容,系统参数 DATA FIELDDF NUMBERDATA TYPENO. OF BITS Message Number(e.g.,“1001” 0011 1111 0101) - 消息编号 DF002 uint12 12 Reference Station ID - 参考值ID DF003 uint12 12 Modified Julian Day (MJD) Number - 格林尼治标准时间 DF0…

springmvc1

以前的servlet程序: springmvc 不同的处理器:不同的方法或者处理类 所有的请求都会经过dispathcherservlet的doservice方法: mvc原理: 前端控制器:jsp或者什么东西

配置WiFi STA 的 hotspot 2.0 + EAP-AKA 认证

背景介绍 hotspot 2.0 : 无需客户手动输入WiFi密码,使用STA端设备内固定存储的认证信息,进行接入认证。 EAP-AKA: 使用SIM卡信息进行AAA认证。 hostapd 、wpa_supplicant 版本: v2.10-devel 拓扑 STA ----> AP --…

Redis 布隆过滤器性能对比分析

redis 实现布隆过滤器实现方法: 1、redis 的 setbit 和 getbit 特点:对于某个bit 设置0或1,对于大量的值需要存储,非常节省空间,查询速度极快,但是不能查询整个key所有的bit,在一次请求有大量…

Unable to obtain driver using Selenium Manager: Selenium Manager failed解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

软件供应链安全:如何防范潜在的攻击?

来源:https://thehackernews.com/2024/06/practical-guidance-for-securing-your.html 软件生产组织面临越来越大的监管和法律压力,要求其保护供应链并确保软件的完整性,这不足为奇。在过去几年里,软件供应链已经成为攻击者越来越…

Vue3项目如何使用npm link本地测试组件库

一、组件库操作 1、在组件库项目中先运行npm run lib,其效果如下 2、在组件库项目中在运行npm link,其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称(即:组件库packag…

【正点原子i.MX93开发板试用连载体验】录音小程序采集语料

本文最早发表于电子发烧友论坛:【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 接下来就是要尝试训练中文提示词。首先要进行语料采集,这是一…