LeetCode 859 Score of Parentheses

LeetCode 859 Score of Parentheses

傳送門

題目分析

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:

Input: "()"
Output: 1

Example 2:

Input: "(())"
Output: 2

Example 3:

Input: "()()"
Output: 2

Example 4:

Input: "(()(()))"
Output: 6

Note:

  1. S is a balanced parentheses string, containing only ( and ).
  2. 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;
    }
};

感想

挺簡單的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章