20. 有效的括号
难度简单1943收藏分享切换为英文接收动态反馈
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
可以利用栈来解决,遇到左括号压栈,遇到右括号匹配栈顶,若匹配,栈顶出栈,否则无效的匹配。最后如果栈为空,则有效匹配,否则为无效匹配。
class Solution {
public:
bool isValid(string s) {
vector<char> stack;
for (char c : s) {
if (c == '(' or c== '{' or c == '[') {
stack.push_back(c);
} else if (c == ')' or c == '}' or c == ']') {
if (stack.empty()) {
// 需先保证stack非空,否则back行为会报错。
return false;
} else if (stack.back() == '(' and c == ')' or
stack.back() == '{' and c == '}' or
stack.back() == '[' and c == ']')
stack.pop_back();
else {
return false;
}
} else {
;
}
}
if (stack.empty()) {
return true;
} else {
return false;
}
}
};