题目来源
题目描述
题目接收
思路:
- 用栈来验证是否合法。
#include<bits/stdc++.h>
using namespace std;
struct Info{
bool isValid;
int maxDepth;
Info(bool isValid, int maxDepth) : isValid(isValid), maxDepth(maxDepth){
}
};
Info maxDepth(std::string str){
if(str.size() % 2 == 1){
return {false, 0};
}
std::stack<char> stack;
std::map<char, char> pairs{
{')', '('},
{'}', '{'},
{']', '['}
};
int maxDepth = 0;
for(char ch : str){
if(pairs.count(ch)){ // 遇到了需要出栈的符号
if(stack.empty() || stack.top() != pairs[ch]){
return {false, 0};
}
maxDepth = std::max(maxDepth, (int)stack.size());
stack.pop();
}else{
stack.push(ch);
}
}
return Info{stack.empty(), maxDepth};
}