leetcode-856

856. Score of Parentheses

Description

Given a balanced parentheses string S, compute the score of the string based on the following rule:

() has score 1
AB has score A + B, where A and B are balanced parentheses strings.
(A) has score 2 * A, where A is a balanced parentheses string.

Example 1:

1
2
Input: "()"
Output: 1

Example 2:

1
2
Input: "(())"
Output: 2

Example 3:

1
2
Input: "()()"
Output: 2

Example 4:

1
2
Input: "(()(()))"
Output: 6

Note:

S is a balanced parentheses string, containing only ( and ).
2 <= S.length <= 50

Analyse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int scoreOfParentheses(string S) {
int score = 0;
int level = 0;
char last = 0;

for (int i = 0; i < S.length(); i++)
{
if (S[i] == '(')
{
level++;
}
else if (S[i] == ')')
{
level--;

if (last == '(')
{
score += 1 << level;
}
}

last = S[i];
}

return score;
}