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;
    }
};
相关推荐
普通网友4 分钟前
C++模块化设计原则
开发语言·c++·算法
864记忆7 分钟前
Qt c++的基础语法有哪些?
开发语言·c++·qt
倦王10 分钟前
力扣日刷251117
算法·leetcode·职场和发展
龙泉寺天下行走11 分钟前
Vscode 配置C++ Mingw调试、编译环境-无需修改系统PATH变量的VS Code配置方法
c++·ide·vscode
AA陈超18 分钟前
ASC学习笔记0025:移除所有属性集
c++·笔记·学习·ue5·虚幻引擎
Genevieve_xiao30 分钟前
【数据结构】【xjtuse】八股文单元小测
数据结构·算法
QT 小鲜肉39 分钟前
【Linux常用命令大全】在 Linux 系统下 Git + Vim编辑器常用指令完全指南(亲测有效)
linux·开发语言·c++·笔记·git·编辑器·vim
Xの哲學40 分钟前
Linux slab分配器深度剖析:从原理到实践
linux·服务器·算法·架构·边缘计算
oioihoii2 小时前
现代C++:一场静默的革命,告别“C with Classes”
c语言·jvm·c++
普通网友2 小时前
C++中的组合模式
开发语言·c++·算法