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;
    }
};
相关推荐
dragoooon343 分钟前
[优选算法专题八.分治-归并 ——NO.49 翻转对]
算法
AI科技星13 分钟前
为什么宇宙无限大?
开发语言·数据结构·经验分享·线性代数·算法
Bona Sun1 小时前
单片机手搓掌上游戏机(十四)—pico运行fc模拟器之电路连接
c语言·c++·单片机·游戏机
Zero-Talent1 小时前
位运算算法
算法
oioihoii1 小时前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
不穿格子的程序员1 小时前
从零开始刷算法——双指针-三数之和&接雨水
算法·双指针
小狗爱吃黄桃罐头2 小时前
《C++ Primer Plus》模板类 Template 课本实验
c++
无限进步_2 小时前
C语言数组元素删除算法详解:从基础实现到性能优化
c语言·开发语言·windows·git·算法·github·visual studio
松涛和鸣2 小时前
16、C 语言高级指针与结构体
linux·c语言·开发语言·数据结构·git·算法
Booksort2 小时前
【LeetCode】算法技巧专题(持续更新)
算法·leetcode·职场和发展