C++ 括号匹配
下面这个是C++老师写的,思路很直观,很清晰。最下面有我的简化版本。
bool is_valid_parentheses(const string& s)
{
stack<char> symbol;
for (const auto& i : s) {
if (i == '(' || i == '[') {
symbol.push(i);
}
else if (i == ')') {
if (!symbol.empty() && symbol.top() == '(') {
symbol.pop();
}
else {
return false;
}
}
else if (i == ']') {
if (!symbol.empty() && symbol.top() == '[') {
symbol.pop();
}
else {
return false;
}
}
else {
return false;
}
}
return symbol.empty();
}
简化版本
bool match(const string strs) {
stack<char> s;
for (const auto& c : strs)
{
if (!s.empty()&&(s.top()=='{'&&c=='}'||s.top()=='(' &&c==')'||s.top()=='['&&c==']'))
s.pop();
else s.push(c);
}
return s.empty();
}
|