LeetCode //C - 856. Score of Parentheses
Summary: The problem involves calculating the score of a balanced parentheses string based on specific rules. The score is determined by the depth of nested parentheses: each inner pair "()"
·
856. Score of Parentheses
Given a balanced parentheses string s, return the score of the string.
The score of a balanced parentheses string is 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:
Input: s = “()”
Output: 1
Example 2:
Input: s = “(())”
Output: 2
Example 3:
Input: s = “()()”
Output: 2
Constraints:
- 2 <= s.length <= 50
- s consists of only ‘(’ and ‘)’.
- s is a balanced parentheses string.
From: LeetCode
Link: 856. Score of Parentheses
Solution:
Ideas:
-
“()” at depth 1 → contributes 1.
-
“(())” → inner “()” at depth 2 → contributes 2.
-
“(()())” → two inner pairs at depth 2 → contributes 2 + 2 = 4.
-
“()(())” → first “()” gives 1, second (()) gives 2 → total 3.
Code:
int scoreOfParentheses(char* s) {
int score = 0;
int depth = 0;
int n = strlen(s);
for (int i = 0; i < n; i++) {
if (s[i] == '(') {
depth++; // going deeper
} else {
depth--; // closing one level
if (s[i-1] == '(') {
// "()" found → add 2^depth
score += 1 << depth;
}
}
}
return score;
}
更多推荐
所有评论(0)