【力扣刷题练习】20. 有效的括号

题目描述:

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

有效字符串需满足:

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

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

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

题目解答:

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
        int n=s.size();
        if (n % 2)
            return false;
        stack<char> st;
        for (int i = 0; i < n; i++) {
            if (s[i] == '(' || s[i] == '{' || s[i] == '[')
                st.push(s[i]);
            else {
                if (!st.empty()) {
                    if (s[i] == ')' && st.top() == '(' ||
                        s[i] == '}' && st.top() == '{' ||
                        s[i] == ']' && st.top() == '['){
                            st.pop();
                            continue;
                        }
                }
                return false;
            }
        }
        return st.empty() ? true : false;
    }
};

题目思路:

栈的基本题型,基本思路为循环字符串,当遇到左括号入栈,遇到右括号则判断是否与栈顶元素匹配,若匹配则将栈顶左括号取出,若不匹配则直接终止,当整个字符串循环结束后以栈内元素是否为空来判断匹配结果。

相关推荐
d111111111d1 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
Jiangxl~2 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
李伟_Li慢慢3 小时前
wolfram详解山峦算法
前端·算法
counting money3 小时前
prim算法最小生成树(java)
算法
澈2073 小时前
C++面向对象:类与对象核心解析
c++·算法
用户690673881923 小时前
基于无人机的单目测距系统,平均误差仅2.12%
算法
6Hzlia3 小时前
【Hot 100 刷题计划】 LeetCode 141. 环形链表 | C++ 哈希表直觉解法
c++·leetcode·链表
dinl_vin3 小时前
LangChain 系列·(四):RAG 基础——给大模型装上“外脑“
人工智能·算法·langchain
探物 AI4 小时前
【感知·医学分割】当 YOLOv11 杀入医学赛道:先检测后分割的级联架构
算法·yolo·计算机视觉·架构
隔壁大炮4 小时前
Day06-08.CNN概述介绍
人工智能·pytorch·深度学习·算法·计算机视觉·cnn·numpy