题目描述:
如果字符串满足一下条件之一,则可以称之为 有效括号字符串(valid parentheses string
,可以简写为 VPS
):
字符串是一个空字符串 ""
,或者是一个不为 "("
或 ")"
的单字符。
字符串可以写为 AB
(A
与 B
字符串连接),其中 A
和 B
都是 有效括号字符串 。
字符串可以写为 (A)
,其中 A
是一个 有效括号字符串 。
类似地,可以定义任何有效括号字符串 S
的 嵌套深度 depth(S)
:
depth("") = 0
depth(A + B) = max(depth(A), depth(B))
,其中 A
和 B
都是 有效括号字符串
depth("(" + A + ")") = 1 + depth(A)
,其中 A
是一个 有效括号字符串
例如:""
、"()()"
、"()(()())"
都是 有效括号字符串(嵌套深度分别为 0、1、2
),而 ")("
、"(()"
都不是 有效括号字符串 。
给你一个 有效括号字符串 s
,返回该字符串的 s
嵌套深度 。
解题思路:
其实求i --> [0 , s.length()]
就是 "("
或 ")"
抵消后, 剩余的"("
的个数midD ,求出 最大的 midD 即为 嵌套深度;
代码实现:
class Solution {
public:
int maxDepth(string s) {
int i , midD = 0 , ret = 0 ;
for (i = 0 ; i < s.length() ; i ++) {
if (s[i] == '(') midD ++ ;
else if (s[i] == ')') midD -- ;
ret = max(ret , midD) ;
}
return ret ;
}
};
复杂度计算:
时间复杂度:O(n) ;
空间复杂度:O(1) ;