12.18 - 有效的括号 && C语言中static的作用

目录

1.有效的括号

a.核心思想

b.思路

c.步骤

2.C语言中static的作用


1.有效的括号

20. 有效的括号 - 力扣(LeetCode)https://leetcode.cn/problems/valid-parentheses/submissions/685718578/

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        unordered_map<char, char> mapping = {
            {')', '('}, {'}', '{'}, {']', '['}};
        for (char c : s) 
        {
            if (c == '(' || c == '{' || c == '[') 
            {
                st.push(c);
            }
            else 
            {
                if (st.empty() || st.top() != mapping[c]) 
                    return false;
                st.pop();
            }
        }
        return st.empty();
    }
};

a.核心思想

利用栈的数据结构来处理括号匹配问题,通过遍历字符串,遇到左括号入栈,遇到右括号则检查栈顶元素是否为其对应的左括号,若不是则字符串无效,遍历结束后若栈不为空也说明字符串无效。

b.思路

遍历给定字符串,当遇到左括号时,将其压入栈中;当遇到右括号时,检查栈是否为空,若为空则说明没有匹配的左括号,字符串无效,若不为空则弹出栈顶元素并判断是否与当前右括号匹配,若不匹配则字符串无效。最后检查栈是否为空,若为空则字符串有效,否则无效。

c.步骤

① 初始化一个空栈。

② 遍历字符串:

若是左括号:压入栈。

若是右括号:若栈为空,返回 false。若栈不为空,弹出栈顶元素,判断是否与当前右括号匹配,不匹配则返回 false

③ 遍历结束后,若栈为空,返回 true,否则返回 false

2.C语言中static的作用

① 局部静态变量:函数内定义,生命周期为程序全程,仅初始化一次,保留多次调用间的值。

② 全局静态变量/函数:文件作用域内定义,限制变量/函数的可见性为当前文件,避免跨文件命名冲突。

③ 存储位置:静态变量存储在全局数据区(非栈区),程序启动时分配内存,结束时释放。

简单来说,就是static实现"内部持久化"(局部变量持久存在)和"内部封装"(限制全局变量/函数的作用域)。

希望这些内容对大家有所帮助!

感谢大家的三连支持!

相关推荐
笨鸟先飞的橘猫9 分钟前
c++游戏后端开源框架学习——wukong(十、lua热更新)
c++·游戏·开源
我变成萤火虫24 分钟前
2026 ICPC沈阳邀请赛Vp补题
数据结构·c++·算法·贪心算法·stl·排序算法·动态规划
神威难绷泪25 分钟前
数据结构:二叉树
数据结构·二叉树
风起洛阳@不良使26 分钟前
中级软考(软件攻城狮)第3章知识点——数据结构与数据运算(线性结构+非线性结构)
数据结构·算法·链表
AndrewHZ41 分钟前
图像处理入门009 | OpenCV 图像读取与显示:imread/imshow 全解析
图像处理·python·opencv·算法·计算机视觉·图像显示
学计算机的计算基41 分钟前
TCP 传输层硬核整理:三次握手、四次挥手、拥塞控制一次讲透
java·网络·笔记·网络协议·算法
索西引擎43 分钟前
【数据结构】B树与B+树:结构性质、对比分析与磁盘优化机理
数据结构·b树
xx~t1 小时前
嵌入式学习22
数据结构·学习·算法·排序算法
我是苏苏1 小时前
C#基础:不写for循环的五种方式
数据结构·算法·c#
小小龙学IT1 小时前
Google Test(gtest/gmock)开源 C++ 单元测试与 Mock 框架完全指南
c++·单元测试·开源