LeetCode20. 有效的括号(2024冬季每日一题 11)

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

有效字符串需满足:

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

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

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

示例 1:

输入:s = "()"

输出:true

示例 2:

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

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

提示:

1 < = s . l e n g t h < = 1 0 4 1 <= s.length <= 10^4 1<=s.length<=104

s 仅由括号 '()[]{}' 组成


思路:

  • 通过栈来校验括号顺序是否正确,是否有效
cpp 复制代码
class Solution {
public:
    int stack[10010];
    int tt = -1;
    unordered_map<char, char> h;
    bool isValid(string s) {
        h['}'] = '{';
        h[')'] = '(';
        h[']'] = '[';
        int n = s.size();
        for(int i = 0; i < n; i++){
            char c = s[i];
            if(c == '(' || c == '{' || c == '['){
                stack[++tt] = c;
            }else{
                if(tt == -1) return false;
                if(stack[tt] != h[c]) return false;
                tt--;
            }
        }
        return tt == -1;
    }
};
相关推荐
ValhallaCoder2 分钟前
hot100-子串
数据结构·python·算法
ygklwyf5 分钟前
无向图的连通性之割点/边,点/边双连通分量
算法·无向图·圆方树
2401_838472516 分钟前
单元测试在C++项目中的实践
开发语言·c++·算法
naruto_lnq11 分钟前
移动语义与完美转发详解
开发语言·c++·算法
MicroTech202521 分钟前
自适生长的点云智能:MLGO微算法科技基于双阈值与DDM的仿生式配准算法
科技·算法
yunsr29 分钟前
python作业1
开发语言·python·算法
赤水无泪36 分钟前
04 C++语言---运算符和符号
开发语言·c++
清铎38 分钟前
项目_华为杯’数模研赛复盘_第二问
深度学习·算法·机器学习
v_for_van43 分钟前
力扣刷题记录1(无算法背景,纯C语言)
算法·leetcode·职场和发展
从此不归路1 小时前
Qt5 进阶【10】应用架构与插件化设计实战:从「单体窗口」走向「可扩展框架」
开发语言·c++·qt·架构