有效的括号--leetcode

  • 有效的括号

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

有效字符串需满足:

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

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

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

示例 1:

输入:s = "()"

输出:true

示例 2:

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

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

示例 5:

输入:s = "([)]"

输出:false

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
        stack<char> stk;
        for (int i = 0; i < s.size(); ++i) {
            if (stk.empty()) {
                stk.push(s[i]);
            } else {
                if (stk.top() == '[' && s[i] == ']') {
                    stk.pop();
                } else if (stk.top() == '{' && s[i] == '}') {
                    stk.pop();
                } else if (stk.top() == '(' && s[i] == ')') {
                    stk.pop();
                } else {
                    stk.push(s[i]);
                }
            }
        }
        if (stk.empty()) {
            return true;
        }
        return false;
    }
};
相关推荐
近津薪荼2 分钟前
递归专题(2)——合并链表
c++·学习·算法·链表
Asher阿舍技术站3 分钟前
【数字通信理论系列】四、载波相位同步
算法·载波同步
冰冰的coco3 分钟前
如何设置需要sudo的命令开机自启动
linux·运维·服务器
圣保罗的大教堂3 分钟前
leetcode 3013. 将数组分成最小总代价的子数组 II 困难
leetcode
辞旧 lekkk5 分钟前
【Linux】Linux进程控制(三)自主实现简易shell命令行解释器
linux·运维·服务器·学习·萌新
-Try hard-7 分钟前
队列 | 二叉树
算法
Sagittarius_A*9 分钟前
灰度变换与阈值化:从像素映射到图像二值化的核心操作【计算机视觉】
图像处理·人工智能·opencv·算法·计算机视觉·图像阈值·灰度变换
HIT_Weston17 分钟前
119、【Ubuntu】【Hugo】首页板块配置:Template Lookup Order
linux·运维·ubuntu
Nie_Xun18 分钟前
卡尔曼滤波(EKF/IEKF)与非线性优化(高斯-牛顿法)的统一关系
算法
wangt595220 分钟前
Ubuntu22.04.5的网络配置在重启后被重置的问题
linux·运维·服务器