--- title: 856. Score of Parentheses tags: Stack description: share source code. --- # 856. Score of Parentheses ```java // used Stack to find ( and ) class Solution { public int scoreOfParentheses(String s) { Stack<Character> sk = new Stack<>(); for(char c : s.toCharArray()){ // if find ), I get all the number before ) if(c == ')'){ int num = 0; while(!sk.isEmpty() && sk.peek() !='('){ num += (sk.pop() -'0'); } sk.pop(); // ( if(num == 0){ // if there is a case (), no num before ( set it to 1 num = 1; } else{ num *= 2; } // (( () )) -> stack (( 1 -> (2 -> 4 sk.push( (char) (num + '0') ); }else{ sk.push(c); } } int output = 0; while(!sk.isEmpty()){ output += (sk.pop() - '0'); } return output; } } ```