力扣20、有效的括号(简单)

1 题目描述

图1 题目描述

2 题目解读

        给定的字符串只包含括号,判断这个字符串中的括号是否按照正确顺序出现,即这个字符串是否有效。

3 解法一:栈

        C++的STL中的stack,在解题时非常好用。

3.1 解题思路

        使用栈stk,并枚举字符串s的每一个字符。如果字符c是右括号,就进行以下判断,否则将其压入stk栈中:如果栈stk非空,且栈顶字符是对应的左括号,则弹出stk栈顶元素,否则返回false。

3.2 设计代码

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();}
};

3.3 复杂度分析

  • 时间复杂度:O(n)。其中,n是字符串s的长度。
  • 空间复杂度:O(n+\left | \sum \right |)。其中,\sum表示字符集,本题中字符串只包含6种括号,\left | \sum \right |=6。代码中使用了栈和哈希表,空间复杂度分别为O(n)O(\left | \sum \right |),将这两个空间复杂度相加,则得到总空间复杂度。

3.4 提交结果

图2 提交结果

4 解题心得

  • C++的STL中,栈stack在解题时非常好用。
  • 哈希表在使用时,有空间复杂度。
  • 哈希表的count()方法,可以在哈希表中查找元素。

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

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

相关文章

Windows 和 Anolis 通过 Docker 安装 Milvus 2.3.4

Windows 10 通过 Docker 安装 Milvus 2.3.4 一.Windows 安装 Docker二.Milvus 下载1.下载2.安装1.Windows 下安装&#xff08;指定好Docker文件目录&#xff09;2.Anolis下安装 三.数据库访问1.ATTU 客户端下载 一.Windows 安装 Docker Docker 下载 双击安装即可&#xff0c;安…

更新最近可以使用的 ip归属地免费api

太平洋IP地址归属地查询接口&#xff1a; 请求接口&#xff1a;http://whois.pconline.com.cn/ipJson.jsp?ip123.123.123.123&jsontrue 返回结果包括国家、省份、城市等信息。此外&#xff0c;如果IP地址为空&#xff0c;接口还可以根据网络定位返回设备位置信息。www.ip.…

【美团】交易系统平台-数据仓库研发工程师

更新时间&#xff1a;2024/01/28&#xff5c;工作地点&#xff1a;北京市&#xff5c;事业群&#xff1a;到家事业群&#xff5c;工作经验&#xff1a;3年 部门介绍 到家研发平台秉承“零售科技”战略&#xff0c;致力于推动餐饮、零售需求侧和供给侧数字化升级&#xff0c;构…

移动Web——平面转换-多重转换

1、平面转换-多重转换 多重转换技巧&#xff1a;先平移再旋转 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name&qu…

Hive中left join 中的where 和 on的区别

目录 一、知识点 二、测试验证 三、引申 一、知识点 left join中关于where和on条件的知识点&#xff1a; 多表left join 是会生成一张临时表。on后面&#xff1a; 一般是对left join 的右表进行条件过滤&#xff0c;会返回左表中的所有行&#xff0c;而右表中没有匹配上的数…

第3讲 谈谈final、finally、 finalize有什么不同?

参考 三者区别 final final 是 java 关键字可修饰变量&#xff08;类成员变量、类静态变量、局部变量和形参&#xff09;&#xff1a;表示不可修改当前变量的值&#xff08;这里的值可以是地址&#xff0c;也可以是基本类型的值&#xff09;#&#xff08;注意&#xff1a;fi…

C++11(中):智能指针

智能指针 1.内存泄漏1.1内存泄漏的概念以及危害1.2内存泄漏的场景1.3如何避免内存泄漏 2.智能指针的使用及原理2.1RAII2.2智能指针的原理2.3 std::auto_ptr2.4 定制删除器2.5 std::unique_ptr2.6 std::shared_ptr2.7 std::weak_ptr2.7.1 std::shared_ptr的循环引用2.7.2 循环引…

Spring Cloud 之 Gateway详解

大家好&#xff0c;我是升仔 前言 在微服务架构中&#xff0c;网关扮演着至关重要的角色。它不仅是服务与外界交流的门户&#xff0c;还负责路由、过滤和安全等重要功能。Spring Cloud Gateway作为Zuul的继任者&#xff0c;凭借其更高的性能和灵活的配置方式&#xff0c;成为…

26. 删除有序数组中的重复项()-双指针

给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你…

qemu 单步调试linux driver

一、背景 qemu单步调试arm64 linux kernel-CSDN博客介绍了如何单步调试kernel&#xff0c; 但是我们经常写一些测试driver, driver的部分如何调试&#xff1f; 二、环境准备 调试driver 就需要准备一个简单的driver&#xff0c; 这里用最简单的hello world来演示如何调试&am…

java日志框架总结(三 、Log4j日志框架)

一、简介 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目&#xff0c; 为Java提供了日志记录功能。能够让程序员非常方便的记录日志&#xff0c; 并且提供了多种适配方式&#xff0c;能满足各种需求。 使用Log4j 只需要导入一个…

算法每日一题: 最大合金数 | 二分

大家好&#xff0c;我是星恒&#xff0c;今天给大家带来的是一道比较正常的二分题目 题目&#xff1a;leetcode 2861假设你是一家合金制造公司的老板&#xff0c;你的公司使用多种金属来制造合金。现在共有 n 种不同类型的金属可以使用&#xff0c;并且你可以使用 k 台机器来制…

sql总结(高阶用法)

最近在做账单统计的需求&#xff0c;需要写较多的sql&#xff0c;也用到了很多以前没有用过的sql用法&#xff0c;通过本篇文章进行总结。 1.SUM() 和 CASE WHEN… SUM(CASE WHEN change_type -1 THEN total_amount ELSE 0 END) AS totalExpenditure这是一个典型的用法&#…

【设计模式】腾讯面经:原型模式怎么理解?

什么是原型模式&#xff1f; 设计模式是编程世界的基石&#xff0c;其中原型模式无疑是一种常用而又高效的创建对象的手段。那么&#xff0c;什么是原型模式呢&#xff1f;又该如何去实现它&#xff1f; 在软件工程中&#xff0c;原型模式是一种创建型设计模式。我们可以这样…

Python可视化库:数据呈现的多彩世界

Python可视化库&#xff1a;数据呈现的多彩世界 一、Matplotlib二、Seaborn三、Plotly四、Bokeh五、pyecharts六、总结 在当今数据驱动的时代&#xff0c;将复杂的数据集转换成易于理解的图形和图表变得越来越重要。Python作为一种流行的编程语言&#xff0c;其强大的可视化库为…

2024獬豸杯完整Writeup

文章目录 手机手机基本信息- 1、IOS手机备份包是什么时候开始备份的。&#xff08;标准格式&#xff1a;2024-01-20.12:12:12)手机基本信息- 2、请分析&#xff0c;该手机共下载了几款即时通讯工具。&#xff08;标准格式&#xff1a;阿拉伯数字&#xff09;手机基本信息- 3、手…

Zerosync:构建基于STARK的Bitcoin证明系统

1. 引言 前序博客&#xff1a; BitcoinSTARK: ZeroSync & Khepri Robin Linus、Tino Steffens、Lukas George 等人成立了一个名为 ZeroSync 协会&#xff08;ZeroSync Association&#xff09;的瑞士非营利组织&#xff0c;该组织将牵头开发比特币证明系统。ZeroSync 于…

共享自助空间打破传统束缚,创新消费体验

共享自助空间是指将传统的办公空间、工作空间、社交空间等资源进行共享&#xff0c;为个体或小型团体提供灵活的使用服务和自主管理的空间。这种模式使得个人可以在一个共享的环境中独立办公、工作或社交&#xff0c;并能享受到共享资源和服务的便利&#xff0c;比如共享茶室、…

【数据分析】numpy基础第四天

文章目录 1. 前天教程与巩固1.1. 第一天1.2. 第二天1.3. 第三天 2. 问题解析2.1. 第一天1. 如何创建Numpy数组2. 如何获取第3个元素3. 如何获取包含第1、2、3行的切片 2.2. 第二天4. 如何将一个有10个元素的一维数组&#xff0c;转变为10行1列的二维数组5. 如何在垂直或者水平上…

超温报警器电路设计方案汇总

超温报警器电路设计方案&#xff08;一&#xff09; 该超温报警电路由温度采集电路、继电器控制电路、延时电路、秒脉冲信号发生器、计数译码电路、数显电路、报警电路共同构成。下面来详细介绍一下各部分电路的功能。 温度采集电路 温度采集电路由负温度系数的热敏电阻RW、R…