LeetCode 859 Score of Parentheses
題目分析
Given a balanced parentheses string
S
, compute the score of the string based on the following rule:
()
has score 1AB
has scoreA + B
, where A and B are balanced parentheses strings.(A)
has score2 * A
, where A is a balanced parentheses string.Example 1:
Input: "()" Output: 1
Example 2:
Input: "(())" Output: 2
Example 3:
Input: "()()" Output: 2
Example 4:
Input: "(()(()))" Output: 6
Note:
S
is a balanced parentheses string, containing only(
and)
.2 <= S.length <= 50
給你一個配對好的括號串,計算這個字符串的得分。
思考
有題目中的要求知道只有()
才能得分,而且嵌套的()
會將得分加倍,所以題目可以簡化爲求所有的()
的得分,其中得分多少取決於被嵌套的層數。
代碼實現
class Solution {
public:
int scoreOfParentheses(string S) {
int cnt = 0;
int res = 0;
// 記錄上一個字符
char last = ' ';
for (auto &ch : S) {
// 深度加大
if (ch == '(') {
cnt++;
}
else {
// 深度變小
cnt--;
// 上一個是'('表名這一對是(),可以加分
if (last == '(') {
res += 1 << cnt;
}
}
// 記錄字符
last = ch;
}
return res;
}
};
感想
挺簡單的。