Leetcode简单:20. 有效的括号

【简单】力扣算法题解析LeetCode20:有效的括号 本文介绍了如何判断一个仅包含括号字符的字符串是否有效。通过使用栈数据结构,可以高效检查括号的匹配情况。算法首先预处理奇数长度字符串,随后遍历字符:左括号压栈,右括号检查栈顶匹配性。最终栈空则返回true。Java实现利用数组模拟栈,优化了性能,确保时间复杂度为O(n)。该方法简洁高效,适用于常见括号匹配问题。 阅读详情

题目:有效的括号

  • 题号:20
  • 难度:简单
  • https://leetcode-cn.com/problems/valid-parentheses/

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

示例 4:

输入: s = "([)]"
输出: false

示例 5:

输入: s = "{[]}"
输出: true

示例 6:

输入: s = ""
输出: true

示例 7:

输入: "(("
输出: false

提示:

  • 1<=s.length<=1041 <= s.length <= 10^41<=s.length<=104
  • s 仅由括号 ‘()[]{}’ 组成

实现

思路:利用栈,首先判断该字符串长度的奇偶性,如果是奇数,则返回false。否则,利用栈先进后出的特点,遇到“{”,“[”,“(”进行入栈操作,遇到“}”,“]”,“)”就与栈顶元素进行比较,如果是对应括号则出栈,否则返回false。

C# 语言

public class Solution {
    public bool IsValid(string s) 
    {
        if (string.IsNullOrEmpty(s))
            return true;

        int count = s.Length;
        if(count%2 == 1)
            return false;
            
        Stack<char> stack = new Stack<char>();
        for (int i = 0; i < count; i++)
        {
            char c = s[i];
            if (stack.Count == 0)
            {
                stack.Push(c);
            }
            else if(c == '[' || c == '{' || c == '(')
            {
                stack.Push(c);
            }
            else if (stack.Peek() == GetPair(c))
            {
                stack.Pop();
            }
            else
            {
                return false;
            }
        }
        return stack.Count == 0;        
    }
    
    public static char GetPair(char c)
    {
        if (c == ')')
            return '(';
        if (c == '}')
            return '{';
        if (c == ']')
            return '[';
        return '\0';
    }    
}

Python 语言

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        dic = {")": "(", "}": "{", "]": "["}
        if s is None:
            return True
            
        count = len(s)
        if count % 2 == 1:
            return False
            
        lst = list()
        for i in range(count):
            c = s[i]
            if len(lst) == 0:
                lst.append(c)
            elif c == "[" or c == "{" or c == "(":
                lst.append(c)
            elif lst[-1] == dic[c]:
                lst.pop()
            else:
                return False
        return len(lst) == 0
使用Simulink对基于GaN器件的高频电源进行建模与仿真,重点在于优化其效率 本文介绍了基于Simulink的GaN器件高频电源仿真建模方法。通过7个步骤详细讲解系统构建过程:从创建模型、设置电源、配置GaN开关网络,到添加磁性元件、负载和控制器设计,最后进行仿真分析。重点探讨了效率优化策略,包括开关频率选择、磁性元件优化、散热设计改进及控制策略调整。该教程为GaN器件在电力电子系统中的应用提供了完整的仿真流程指导,有助于设计人员验证方案并优化性能。 阅读详情

相关推荐

C语言 函数

一、什么是函数 二、函数的相关语法 三、函数编码规范

m0_57105760的博客 1890

【LeetCode】C++ :简单题 - 20 有效的括号

20. 有效的括号 难度简单2053 给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例2: 输入: "()[]{}" 输出: true 示例3: 输入: "(]" 输出: false 示例4: 输入: "([)]" 输出: false 示...

weixin_44566432的博客 175

告别‘小目标’丢失!手把手复现DNANet红外检测网络(PyTorch版)

本文详细介绍了如何使用PyTorch从零实现DNANet红外小目标检测网络,重点解析了DNIM模块和CSAM注意力机制的设计与实现。通过实战教程,帮助开发者解决红外小目标检测中的特征提取和训练调参难题,适用于军事侦察、安防监控等场景。

weixin_28701593的博客 252

力扣20题. 有效的括号(难度:简单)c语言

本题可以利用数据结构中栈的相关知识点进行解答,我们可以将左括号输入栈中,当s[i]为右括号时,可以与栈中存储的左括号进行依次判断,来证明字符串是否为有效括号。// 假设输入的字符串长度不超过100。// 读取用户输入的字符串。其中要将每种情况都想到或者什么情况下可以不做判断,直接出答案。printf("请输入一个字符串: ");//做判断,有的情况top不为0:例如'((',判断字符串是否有效。

yes_you_areright的博客 361

【车辆仿真】从0开始建立dSPACE RT Simulink工程:输出模拟电平

0基础建议先看下前面的博文,补充基础知识。原来的博文太长太复杂,后续我会逐步梳理改进,去除操作层面的内容,仅关注知识层面,提升系列博文的系统性。【工程环境信息】:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):SCALEXIO RTPC板卡:DS2680。

winnizap的博客 2055

Mac上安装Label Studio

以上步骤详细说明了如何在Mac上通过Anaconda安装Label Studio。记得根据你的具体需求选择是否创建新的环境,并使用conda或pip进行安装。安装完成后,务必验证Label Studio是否成功运行。

g2526的博客 1958

leetcode 20题(简单):有效的括号(C语言)

20.有效的括号 解题思路一: 算法原理: 栈先入后出特点恰好与本题括号排序特点一致,即若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 stack 仍然为空; 遇到左括号入栈,遇到右括号和栈顶元素比较,若不匹配或栈空,直接返回0。 最后若栈非空,返回0,否则返回1。 算法图示: { ...

fenmeibei0223的博客 1538

ISCC练习题MISC

解题技巧:看最后括号应该是IceCTF,先用了一键解码啥也没有啊,不对不对!好像是字符频率统计,转换网站:http://quipqiup.com/有人给你发了一串信息,你能解开吗?

m0_62737381的博客 1119

力扣20:有效地括号(简单)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 思路:栈 解题思路: 算法原理

qq_40310710的博客 240

BRep实战指南:从理论到文件格式的全面解析

本文全面解析BRep(边界表示法)从基础概念到文件格式的实战应用。详细介绍了BRep的数学定义、工业应用场景,以及STEP、IGES等主流文件格式的对比与使用技巧,帮助读者掌握三维建模核心技术并优化性能。

weixin_29235923的博客 407

图神经网络实战(8)——图注意力网络(Graph Attention Networks, GAT)

图注意力网络 (Graph Attention Networks, GAT) 是对图卷积网络 (Graph Convolutional Network, GCN) 的改进,提出了一种通过自注意力 (self-attention) 过程计算的加权因子,而不是使用静态的归一化系数。在本节中,我们介绍了 GAT 架构。通过从线性变换到多头注意力的四个主要步骤,了解了 GAT 的工作原理,并在 NumPy 中从零开始构建了 GAT 层。最后,将 GAT 模型应用于 Cora 和 CiteSeer 数据集。

盼小辉丶的博客 1万+

每日一道笔试题--leetCode:20. 有效的括号(简单)

每日一道笔试题–leetCode:20. 有效的括号(简单) ##leetCode:20. 有效的括号(简单) 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入:

水巷石子的博客 3368

Qt Creator 启动慢、卡顿、无响应 终极解决教程

<think>我们需根据内容生成≤150字的摘要。摘要要涵盖问题、原因、解决方案和效果。注意字数限制。</think>Qt Creator启动慢、卡顿、无响应,主因是配置文件QtCreator.ini膨胀至数十MB(正常<100KB)。删除%APPDATA%\QtProject下的膨胀配置、崩溃备份及qtcreator.db即可,启动从几十秒降至几秒,内存占用恢复正常。辅助优化:关闭有道词典取词、禁用无用插件、调整clangd设置。定期检查配置文件大小,避免多版本共用配置。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 69

Leetcode20:有效的括号 (简单题)python3

题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 很有意思的一个题,开始尝试一个个进行匹配,但这显然em。。。。非常复杂,尝试了一下后发现了一个很有意思的

weixin_36679158的博客 164

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

每天一道leetcode:20.有效的括号(简单;栈的经典题目)

每天一道leetcode:20.有效的括号(简单;栈的经典题目)

qq_63349644的博客 744

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【刷题笔记】LeetCode_20:有效的括号_简单(C)

题目:有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例: 输入: “([)]” 输出: false 输入: “{[]}” 输出: true 本来打算只写中等题的笔记,结果发现这道简单题我都不会做QAQ。...

Na2So4_的博客 328

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LeetCode_Python3: 20. 有效的括号(简单)

开始之前:从2018/8/27开始刷LeetCode,计划每周刷五题,周末进行总结并发布在csdn上,计划先刷150道题,从简单开始。 week 2-1 要求: CODE: class Solution: def isValid(self, s): """ :type s: str :rtype: bool ""...

Kuroyukineko的博客 463

有效的括号

每日一题ing,今天是个简单题力扣 20. Valid Parentheses class Solution { public: bool isValid(string s) { int stack[10010]; memset(stack,0,10010); int i=0,j=-1; while(i<s.length()&&j<10000) { if(s[i]=='

Douglas_LT的博客 183

Java - LeetCode 20.有效的括号(代码简洁,思路易懂,小白入手)(字符串)

leetcode 20. 有效的括号 规律: 先出现的后匹配。 栈:先进后出。 匹配的过程就是出栈的过程。 下面给出两种方法:1、最简单算法。(建议使用)2、利用哈希配对 简单代码:(用时1ms) class Solution { public boolean isValid(String s) { //创建一个栈。 Stack<Character> stack = new Stack<Character>(); //遍历,取出这个字

weixin_51136573的博客 254

leetcode算法题20——有效的括号

有效的括号(简单) 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 输入: “()” 输出: true 输入: “()[]{}” 输出: true 输入: “(]” 输出: false 输入: “([)]” 输出: false 输入: “{[]}” 输出: true 解题 这个题主要用到了栈的思想,由于栈是先进后出

诶你爱我吗的博客 257

Leetcode 20. 有效的括号

Leetcode 20. 有效的括号1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/valid-parentheses/   本质上就是一个栈操作。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "algorith

珍惜 8942

LeetCode高频题20:有效的括号

1)括号匹配问题,有一系列的题目,最开始那几个基础,是只有一种小括号()的情况,然后看合法不合法 2)本题有多重括号,你需要用栈来压入弹出对比,匹配不上就不行。 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。...

weixin_46838716的博客 1764

【力扣】stack容器的探索之有效的括号

Leetcode的一道难度为简单的算法题,可以帮助大家很好的理解Stack这个数据结构,希望大家喜欢。更多专栏请点击专栏名字🔥Elasticsearch专栏es🔥spring专栏spring开发redis专栏redis学习笔记🔥项目专栏项目集锦修bug专栏bug修理厂。

狮子也疯狂的博客 1229

Leetcode20-有效的括号详解

Leetcode20-有效的括号详解

白羊by的博客 1863

【LeetCode20】有效的括号——图解

你好,欢迎来到我的博客!作为一名程序员,我经常刷**LeetCode**题目来提升自己的编程能力。在我的博客里,我会分享一些我自己做过的题目和解题思路,希望能够帮助到大家。今天,我想和大家分享一道挑战性较高的题目,让我们一起来挑战一下吧!作者也是在学习的过程中刷到有意思的题目就会选择与大家分享,并且提供较优解,关于力扣的文章全部放在[博客] 题目难度:简单 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符

qq_65596720的博客 1012

力扣LeetCode第20题有效的括号

力扣LeetCode第20题有效的括号 题目: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路: 1、首先做该题目最好的方法是利用栈 2、循环遍历字符串s每

weixin_44061444的博客 553
上一篇: Leetcode简单:14. 最长公共前缀
下一篇: Leetcode简单:21. 合并两个有序链表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青少年编程小助手_Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值