力扣:有效的括号

news2025/1/23 8:02:25

自己编写的代码 。

自己的思路:

class Solution {
private:
    unordered_map<char,int>symbolValues={
        {'(',1},
        {')',2},
        {'{',4},
        {'}',5},
        {'[',8},
        {']',9},        
    };

public:
    bool isValid(string s) {
        bool flag=false;
        int  lens=s.length();
        if (lens % 2 != 0)
        {
            flag = false;
        }
        for(int i=0;i<lens;i+=2)
        {
            int value = symbolValues[s[i]];
            int value1 = symbolValues[s[i+1]];
            if(value>=value1||value1-value!=1)
            {   
                int n=(lens/2);               
                if(symbolValues[s[n]]-symbolValues[s[n-1]]!=1)
                {flag =  false;}
            }
            
        }
        return flag;
    }
};

官方解答:

讲一下思路吧这里定义了一个map,都是字符类型的,对应了键和值的操作。定义了一个栈,这个栈是一个线性结构,开始遍历,目前还是不知道这里为什么用for(char ch:s),然后去搜索,得到参考文档[1]。创建一个char 的字符串类型,去遍历字符串s。这里的if(pairs.count(ch))如果

stack<char>stk 语句参考文档[2] .

这里pairs.count(ch)是此算出ch在pais.出现的次数。

如果是右括号,就返回1,左括号返回0.GPT搭的好像不是很对,然后如果是右括号,就进入如下判断,首先判断这个容器是是否为空栈或者栈顶不等于当前键和值,栈顶的元素,比如(要与)配对即stk.top() == pairs[ch] ,如果不是一对就返回false,

心得:这道题利用了栈的后进先出的原理。

 

[1]C++ for(char c:s)遍历字符串 增强型for循环_c++增强for循环_龙叙的博客-CSDN博客 

 [2]C++之Stack容器初学-CSDN博客

class Solution {
public:
    bool isValid(string s) {
        int n = s.size();
        if (n % 2 == 1) {
            return false;
        }

        unordered_map<char, char> pairs = {
            {')', '('},
            {']', '['},
            {'}', '{'}
        };
        stack<char> stk;
        for (char ch: s) {
            if (pairs.count(ch)) {
                if (stk.empty() || stk.top() != pairs[ch]) {
                    return false;
                }
                stk.pop();
            }
            else {
                stk.push(ch);
            }
        }
        return stk.empty();
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

花了三年时间开发的开源项目,终于500 个 Star 了!快收藏

waynboot-mall 商城项目从疫情开始初期着手准备&#xff0c;到现在已经经过了 3 年多的时间&#xff0c;从项目初期到现在&#xff0c;一个人持续迭代&#xff0c;修复漏洞&#xff0c;添加功能&#xff0c;经历了前端开发工具从 vue2、vue-cli 切换到 vue3、vite 的转变&#…

Spring Security OAuth 2.0 资源服务器— JWT

目录 一、JWT的最小依赖 二、JWT的最基本配置 1、指定授权服务器 2、初始预期&#xff08;Startup Expectations&#xff09; 3、运行时预期&#xff08;Runtime Expectations&#xff09; 三、JWT认证是如何工作的 四、直接指定授权服务器 JWK Set Uri 五、提供 audie…

Linux编译器gcc/g++介绍

gcc/g编译器介绍 编译器的功能就是把代码经过一系列处理变成可执行文件&#xff0c;然后就可以执行文件实现代码的功能。 gcc编译器编译C语言文件&#xff0c;g编译C文件&#xff0c;g也可以编译C语言&#xff0c;但gcc不能编译C文件。 gcc使用方法&#xff1a;gcc [选项] 要编…

【漏洞复现】fastjson_1.2.24_unserializer_rce

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞检测3、漏洞验证 1.5、深度利用1、GetShell 说明内容漏洞编号漏洞名称fastjson 1.2.24 反序列化导致…

vbox虚拟机导出减少体积:压缩VDI文件

前言部分&#xff1a; 网上找了一些virtualBox虚拟机压缩方法&#xff0c;做了测试。虚拟机导出体积有了明显减少。 参考文档&#xff1a;https://blog.csdn.net/mr__bai/article/details/129147223 里面有一些注意事项&#xff0c;包括我在实践时遇到的一些问题&#xff0c;在…

Redis7.x 高级篇

Redis7.x 高级篇 Redis版本发行时间Redis单线程说的是什么东西 Redis版本发行时间 Redis单线程说的是什么东西

微信小程序获取剪切板的内容到输入框中

xml代码 <navigation-bar title"Weixin" back"{{false}}" color"black" background"#FFF"></navigation-bar> <view><input placeholder"请输入内容" name"content" type"text" …

FreeRTOS-定时器\二值信号互斥信号\事件组

FreeRTOS整体知识框架可以参考下文: FreeRTOS整体知识框架 一. FreeRTOS定时器 FreeRTOS定时器 博文路径 FreeRTOS提供了一种软件定时器&#xff0c;用来快速实现一些周期性的操作&#xff0c;并且节约了硬件定时器。不过尽量还是不要做过多的操作&#xff0c;以免影响其他…

文件夹重命名与大小写转换:提高文件检索准确性的技巧

在文件管理中&#xff0c;文件夹的命名和大小写转换是非常重要的操作。正确的文件夹命名和大小写转换可以提高文件检索的准确性&#xff0c;从而提高工作效率和文件管理的便利性。现在来看云炫文件管理器如何进行文件夹重命名和大小写转换的技巧&#xff0c;以帮助您更好地管理…

python 成绩统计,输出及格率和优

题目描述&#xff1a; 小蓝给学生们组织了一场考试&#xff0c;卷面总分为100分&#xff0c;每个学生的得分都是一个0到100的整数。 如果得分至少是60分&#xff0c;则称为及格。如果得分至少为85分&#xff0c;则称为优秀。 请计算及格率和优秀率&#xff0c;用百分数表示&am…

C++入门讲解第一篇

大家好&#xff0c;我是Dark Fire&#xff0c;终于进入了C的学习&#xff0c;我知道面对我的将是什么&#xff0c;就算变成秃头佬&#xff0c;也要把C学好&#xff0c;今天是C入门第一篇&#xff0c;我会尽全力将知识以清晰易懂的方式表达出&#xff0c;希望我们一起加油&#…

电脑出现emp.dll文件缺失的错误提示怎么办,教你一键解决dll丢失问题

今天&#xff0c;我想和大家分享一下关于emp.dll文件丢失的4个解决方法&#xff0c;希望能对大家有所帮助。 首先&#xff0c;我们要明确emp.dll文件的作用。emp.dll是一个动态链接库文件&#xff0c;这个文件对于许多程序的正常运行至关重要&#xff0c;一旦丢失&#xff0c;…

在树莓派上使用Nginx搭建本地站点并通过内网穿透实现远程访问

目录 前言 1. Nginx安装 2. 安装cpolar 3.配置域名访问Nginx 4. 固定域名访问 5. 配置静态站点 前言 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务…

代码随想录算法训练营第23期day41|01背包问题、01背包问题——滚动数组、416. 分割等和子集

目录 一、01背包理论基础 1.二维dp数组01背包 1&#xff09;确定dp数组以及下标的含义 2&#xff09;确定递推公式 3&#xff09;dp数组如何初始化 4&#xff09;确定遍历顺序 5&#xff09;举例推导dp数组 2.一维dp数组&#xff08;滚动数组&#xff09; 1&#xf…

CSS必学:元素之间的空白与行内块的幽灵空白问题

作者:WangMin 格言:努力做好自己喜欢的每一件事 CSDN原创文章 博客地址 &#x1f449; WangMin 我们在开发的过程中&#xff0c;难免会出现一些难以预料的问题。那么其中&#xff0c;CSS空白现象就是非常常见的问题之一。虽然它已经被发现很久&#xff0c;但仍然有许多新手和经…

Redis中的List类型

目录 List类型的命令 lpush lpushx rpush lrange lpop rpop lindex linsert llen lrem ltrim lset 阻塞命令 阻塞命令的使用场景 1.针对一个非空的列表进行操作 2.针对一个空的列表进行操作 3.针对多个key进行操作. 内部编码 lisi类型的应用场景 存储(班级…

智慧工厂人员定位系统及uwb定位技术在现代工厂安全管理中的应用【uwb定位系统源码】

uwb定位系统源码 智慧工厂人员定位系统源码 定位系统源码 随着经济的高速发展&#xff0c;现代制造业规模不断扩大&#xff0c;生产车间面积广阔&#xff0c;生产设备日益繁多&#xff0c;生产工人数量多且分散作业&#xff0c;难以进行有效管理和实施全方位风险管控。现代工厂…

C++查漏补缺与新标准(C++20,C++17,C++11)01 C++快速回顾(一)

本内容参考C20高级编程 模块导入 C 20提供了对于模块的支持&#xff0c;用来代替之前的头文件机制 //Helloworld.cpp import <iostream>int main(){std::cout<<"Hello World!"<<std::end;return 0; }如果在你的编译器中尚未支持模块&#xff0c…

大数据之陌陌聊天数据分析案例

目录 目标需求 数据内容 基于Hive数仓实现需求开发 1.建库建表、加载数据 2.ETL数据清洗 3需求指标统计 目标需求 基于Hadoop和hive实现聊天数据统计分析&#xff0c;构建聊天数据分析报表 1.统计今日总消息量 2.统计今日每小时消息量&#xff0c;发送和接收用户数 3.…