题目


思路
只需要把嵌套情况’平均’分配给两个子序列就可以 注意到seq是有效括号, 因此可以放心记录当前的左括号数量(一定>=0)
如果目前是左括号则数量加1, 之后若现在有奇数个左括号则给0, 偶数个左括号给1
如果目前是右括号, 则抵消掉一个左括号, 若剩余奇数个左括号则给1, 偶数个则给0 (和上一行描述相反)
代码
class Solution {
public:
vector<int> maxDepthAfterSplit(string seq) {
vector<int> res(seq.size());
int left = 0;
for (int loc = 0; loc < seq.size(); ++loc)
{
if (seq[loc] == '(')
{
left++;
if (left % 2) res[loc] = 0;
else res[loc] = 1;
}
else
{
left--;
if (left % 2) res[loc] = 1;
else res[loc] = 0;
}
}
return res;
}
};
本文介绍了一种解决括号序列最大深度划分问题的高效算法。通过遍历字符串,算法实时跟踪左括号的数量,根据当前左括号的奇偶性来决定序列中每个位置的深度归属。该方法不仅简洁,而且避免了复杂的嵌套判断。
635

被折叠的 条评论
为什么被折叠?



