Find maximum depth of nested parenthesis in a string - GeeksforGeeks
We are given a string having parenthesis like below
"( ((X)) (((Y))) )"
We need to find the maximum depth of balanced parenthesis, like 4 in above example. Since 'Y' is surrounded by 4 balanced parenthesis.
If parenthesis are unbalanced then return -1.
http://comproguide.blogspot.com/2015/03/maximum-nesting-depth-of-paranthesis.html
Read full article from Find maximum depth of nested parenthesis in a string - GeeksforGeeks
We are given a string having parenthesis like below
"( ((X)) (((Y))) )"
We need to find the maximum depth of balanced parenthesis, like 4 in above example. Since 'Y' is surrounded by 4 balanced parenthesis.
If parenthesis are unbalanced then return -1.
Method 1 (Uses Stack)
A simple solution is to use a stack that keeps track of current open brackets.
A simple solution is to use a stack that keeps track of current open brackets.
1) Create a stack. 2) Traverse the string, do following for every character a) If current character is ‘(’ push it to the stack . b) If character is ‘)’, pop an element. c) Maintain maximum count during the traversal.
Time Complexity : O(n)
Auxiliary Space : O(n)
Auxiliary Space : O(n)
Method 2 ( O(1) auxiliary space )
1) Take two variables max and current_max, initialize both of them as 0.
2) Traverse the string, do following for every character a) If current character is ‘(’, increment current_max and update max value if required. b) If character is ‘)’. Check if current_max is positive or not (this condition ensure that parenthesis are balanced). If positive that means we previously had a ‘(’ character so decrement current_max without worry. If not positive then the parenthesis are not balanced. Thus return -1. 3) If current_max is not 0, then return -1 to ensure that the parenthesis are balanced. Else return max
int
maxDepth(string S)
{
int
current_max = 0;
// current count
int
max = 0;
// overall maximum count
int
n = S.length();
// Traverse the input string
for
(
int
i = 0; i< n; i++)
{
if
(S[i] ==
'('
)
{
current_max++;
// update max if required
if
(current_max> max)
max = current_max;
}
else
if
(S[i] ==
')'
)
{
if
(current_max>0)
current_max--;
else
return
-1;
}
}
// finally check for unbalanced string
if
(current_max != 0)
return
-1;
return
max;
}
http://comproguide.blogspot.com/2015/03/maximum-nesting-depth-of-paranthesis.html
Read full article from Find maximum depth of nested parenthesis in a string - GeeksforGeeks