思路:要将其分为两个合法的括号,且深度最小,那么最合理的就是将原括号里的最大深度一分为2.
如何实现?
考虑用一个栈来存储 '(' . 如果当前栈内有2个 '(' 那么考虑将奇数位置的分给第1个,偶数位置的分给第2个即可。
同理当遇到')' 时,也只需要看当前栈内有几个'('.
class Solution {
public:
vector<int> maxDepthAfterSplit(string seq) {
int d = 0;
vector<int> ans;
for (auto c : seq)
if (c == '(') {
++d;
ans.push_back(d % 2);
}
else {
ans.push_back(d % 2);
--d;
}
return ans;
}
};