20. 有效的括号

简介: 20. 有效的括号

题目描述

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


有效字符串需满足:


左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

解题思路

括号匹配的问题,显然我们可以用栈来解决。


遇到左括号就入栈。


当是右括号的时候,观察栈是否为空,当为空的时候——不匹配


当栈顶的左括号与右括号不匹配的时候——不匹配

代码

class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        for(auto ch:s)
        {
            if(ch=='('||ch=='['||ch=='{') st.push(ch);
            else 
            {
                if(st.empty()) return false;
                if(ch==')') 
                {
                    if(st.top()!='(') return false;
                    st.pop();
                }
                else if(ch==']')
                {
                    if(st.top()!='[') return false;
                    st.pop();
                }
                else if(ch=='}')
                {
                    if(st.top()!='{') return false;
                    st.pop();
                }
            }
        }
        return st.empty();
    }
};
相关文章
|
弹性计算 运维 监控
【阿里云弹性计算】云上自动化运维实践:基于阿里云ECS的自动化部署与管理
【5月更文挑战第27天】阿里云ECS自动化运维实践:借助ECS API和SDK实现自动化部署,通过Python示例展示实例创建。利用Ansible、Docker等工具进行配置管理和容器化,结合CloudMonitor和Auto Scaling实现监控告警及资源动态调整,提升运维效率和系统稳定性。
542 0
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的全面指南
【5月更文挑战第31天】 在移动开发领域,性能优化和流畅的用户体验是至关重要的。随着Kotlin语言在Android开发中的普及,其提供的协程功能已成为简化异步编程、提高应用响应性和效率的强大工具。本文将深入探讨Kotlin协程的概念、优势以及如何在Android应用中实现它们。通过实际案例分析,我们将展示如何利用协程提升数据处理能力,同时保持UI线程不被阻塞,确保用户界面流畅无阻。
|
算法
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且 总价值最大 。
132 0
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
|
缓存 Java 数据库
线程池(面试常考)
关于“池”的概念,我们接触过字符串常量池,数据库连接池,它们都被用作共享和缓存资源,通俗的将就是使用的时候直接从池子里拿,线程池也一样,在初始化的时候,就创建一定数量元素,后面需要使用线程就直接从线程池中取。
线程池(面试常考)
|
网络协议 虚拟化
春考-网络服务器配置1.1系统安装后的配置
春考-网络服务器配置1.1系统安装后的配置
353 0
春考-网络服务器配置1.1系统安装后的配置
|
编解码 前端开发 UED
响应式设计:让你的网站适应所有设备
随着移动设备的普及,网站的设计必须能够适应各种不同的屏幕尺寸和设备类型。本文将介绍响应式设计的基础知识和实现方法,帮助开发者为不同的设备提供最佳的用户体验。
372 0
|
人工智能 BI
[Atcoder ARC124] XOR Matching 2-小思维 | 暴力
题意: 给出n,两个数列a[1] -> a[n],b[1] -> b[n] 问有多少个x,可以使得在我们任意一种方式排列b[]之后,有a[i] ^ b[i] == x (1 <= i <= n) 思路: 首先我们可以确定所有的答案一定在a[1] ^ b[i] (1 <= i <= n)之内,所以我们只需要将这些个x的解空间单独放到数组c[]里,然后遍历x的解空间c[],将c[i] ^ a[i]的结果记录在d[]里面,然后判断b[],d[]是否完全相同即可,如果完全相同,就可以记录答案,注意最终答案要进行去重
206 0
[Atcoder ARC124] XOR Matching 2-小思维 | 暴力

热门文章

最新文章