力扣1111.有效括号的嵌套深度
栈模拟
-
对于每个括号求出深度
- 奇数深度存入A,偶数深度存入B
- 这样最大程度降低最大深度
-
class Solution {public:vector<int> maxDepthAfterSplit(string s) {//因为栈中只会存(的数量 所有用一个变量即可int d = 0;vector<int> res;for(char c:s){if(c == '('){d ++; //d为当前半括号深度//奇数一个组偶数一个组res.emplace_back(d%2);}else{res.emplace_back(d%2);d --;}}return res;}};
贪心
-
对于每个半括号,只要考虑它与它前一个半括号的关系即可
- 只要相同 就不能存入同一个组(深度一定会++)
- 不同就存入一个组
-
class Solution {public:vector<int> maxDepthAfterSplit(string s) {vector<int> res(s.size(),0);for(int i=1;i<s.size();i++){//相同存不同组if(s[i] == s[i-1])res[i] = 1 - res[i-1];//不同存相同组elseres[i] = res[i-1];}return res;}};