首页 > 其他 > 详细

1111-有效括号的嵌套深度

时间:2020-04-02 00:41:55      阅读:103      评论:0      收藏:0      [点我收藏+]

括号匹配的问题一般都是根据栈来实现的,栈内放入括号进行匹配。

文中具体思路见leetcode解析。

知道如何计算嵌套深度,问题就很简单了:只要在遍历过程中,我们保证栈内一半的括号属于序列 A,一半的括号属于序列 B,那么就能保证拆分后最大的嵌套深度最小,是当前最大嵌套深度的一半。要实现这样的对半分配,我们只需要把奇数层的 ( 分配给 A,偶数层的 ( 分配给 B 即可。对于上面的例子,我们将嵌套深度为 1 和 3 的所有括号 (()) 分配给 A,嵌套深度为 2 的所有括号 ()()() 分配给 B。

此外,由于在这个问题中,栈中只会存放 (,因此我们不需要维护一个真正的栈,只需要用一个变量模拟记录栈的大小。

技术分享图片
 1 class Solution {
 2 public:
 3     vector<int> maxDepthAfterSplit(string seq) {
 4         vector<int> ans;
 5         for (int i = 0; i < (int)seq.size(); ++i) {
 6             ans.push_back(i & 1 ^ (seq[i] == ());
 7         }
 8         return ans;
 9     }
10 };
View Code

 

1111-有效括号的嵌套深度

原文:https://www.cnblogs.com/nxnslc-blog/p/12616773.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!