(a+b) //External parenthesis count = 1
(a+b)*(a-b) //External parenthesis count = 0
((a+b)*(a-b)) //External parenthesis count = 1
(((a+b)*(a-b))) //External parenthesis count = 2
((a)) //External parenthesis count = 2
(a + (b*c)) //External parenthesis count = 1
(a+b)+c //External parenthesis count = 0
For each ( ) pair delete ones (including the parenthesis) that don't contain any parenthesis themselves, eg (a+b) doesn't but (a +
(b*c
)) does.
//External parenthesis count = 1
* //External parenthesis count = 0
(*) //External parenthesis count = 1
((*)) //External parenthesis count = 2
() //External parenthesis count = 2
(a + ) //External parenthesis count = 1
+c //External parenthesis count = 0
Now just count the parenthesis pairs left. Note this doesn't work for (a+b) or ((a)) so you might need a special case for when parenthesis only exists at the beginning and end.