package leetcode;

/**
 * https://leetcode.com/problems/score-of-parentheses/
 */
public class Problem856 {
    public int scoreOfParentheses(String S) {
        return scoreOfParentheses(S, 0, false);
    }

    private int scoreOfParentheses(String s, int i, boolean open) {
        if (i == s.length()) {
            return 0;
        }
        int result = 0;
        if (s.charAt(i) == '(') {
            if (open) {
                result = scoreOfParentheses(s, i + 1, true);
            } else {
                result = scoreOfParentheses(s, i + 1, true);
            }
        } else { // s.charAt(i) == ')'
            result = scoreOfParentheses(s, i + 1, false) + 1;
        }
        return result;
    }

    public static void main(String[] args) {
        Problem856 prob = new Problem856();
//        System.out.println(prob.scoreOfParentheses("()")); // 1
//        System.out.println(prob.scoreOfParentheses("(())")); // 2
//        System.out.println(prob.scoreOfParentheses("()()()")); // 3
//        System.out.println(prob.scoreOfParentheses("(())()")); // 3
//        System.out.println(prob.scoreOfParentheses("()()")); // 2
//        System.out.println(prob.scoreOfParentheses("(()(()))")); // 6
//        System.out.println(prob.scoreOfParentheses("((()))")); // 4
//        System.out.println(prob.scoreOfParentheses("((()()))")); // 8
        System.out.println(prob.scoreOfParentheses("((()())())")); // 10
    }
}

@@ -185,23 +185,16 @@
 ses(S, 0
-, false
 );%0A    %7D
@@ -249,22 +249,8 @@
 nt i
-, boolean open
 ) %7B%0A
@@ -263,17 +263,17 @@
   if (i 
-=
+%3E
 = s.leng
@@ -370,32 +370,34 @@
  '('
-) %7B%0A            if (open
+ && s.charAt(i + 1) == ')'
 ) %7B%0A
@@ -404,36 +404,32 @@
             
-    
 result =
  scoreOfPare
@@ -408,32 +408,36 @@
         result =
+ 1 +
  scoreOfParenthe
@@ -443,38 +443,28 @@
 eses(s, i + 
-1, true);%0A    
+2);%0A
         %7D el
@@ -466,22 +466,42 @@
  %7D else 
-%7B%0A    
+if (s.charAt(i) == '(') %7B%0A
         
@@ -504,32 +504,36 @@
         result =
+ 2 *
  scoreOfParenthe
@@ -548,31 +548,11 @@
  + 1
-, true
 );%0A
-            %7D%0A
     
@@ -567,31 +567,11 @@
 se %7B
- 
+%0A
 //
- s.charAt(i) == ')'%0A
     
@@ -618,20 +618,9 @@
  + 1
-, false) + 1
+)
 ;%0A  
@@ -1012,32 +1012,102 @@
 (())()%22)); // 3%0A
+        System.out.println(prob.scoreOfParentheses(%22(()())()%22)); // 5%0A
 //        System
@@ -1372,16 +1372,18 @@
 ); // 8%0A
+//
         

Update problem 856