- SomeBottle2026-10-0111179
力扣 LeetCode

20. 有效的括号 - 力扣(LeetCode)
20. 有效的括号 - 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1. 左括号必须用相同类型的右括号闭合。
2. 左括号必须以正确的顺序闭合。
3. 每个右括号都有一个对应的相同类型的左括号。示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s...
思路
典型的栈应用题,每次遇到右括号时,栈顶应该有相应的左括号。最后栈不能为空。
代码```
class Solution {
public:
bool isValid(string s) {
// 用栈即可
stack<char> stk;
for(char c:s){
switch(c){
case ')':
if(stk.empty()||stk.top()!='('){
return false;
}
stk.pop();
break;
case '}':
if(stk.empty()||stk.top()!='{'){
return false;
}
stk.pop();
break;
case ']':
if(stk.empty()||stk.top()!='['){
return false;
}
stk.pop();
break;
default:
stk.emplace(c);
}
}
// 注意最后栈不能为空
return stk.empty();
}
};主楼 - tiansuohaoer2026-10-0113094
简单栈模拟```
class Solution {
public:
bool isValid(string s) {
string q;
for(auto c:s){
if(c=='('||c=='['||c=='{')q+=c;
else{
if(q.empty()||abs(c-q.back())>2)return 0;
q.pop_back();
}
}
return q.empty();
}
}; - JARK0062026-10-0111773