目录
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实现"内部持久化"(局部变量持久存在)和"内部封装"(限制全局变量/函数的作用域)。
希望这些内容对大家有所帮助!
感谢大家的三连支持!