leecode856.括號中的分數

free1993發表於2020-12-09

題目

括號中的分數

思路分析

模擬法做這道題。

  • 當遍歷到當前字串為’('時,將0壓入棧中。
  • 當遍歷到當前字串為’)‘時,取棧頂元素。如果棧頂元素是非0,累加棧頂元素,直到遇到0.如果棧頂元素是0,說明此時的情況是’()’,將1壓入棧。
  • 當遍歷完所有的字串的時候,將棧中所有的數字累加得到最後的結果。

程式碼

class Solution {
public:
    int scoreOfParentheses(string S) {
        stack<int> s;
        for(auto c : S){
            if(c == '(') s.push(0);
            else {
                int sum = 0, u;
                while((u = s.top()) != 0)   sum += u, s.pop();
                s.pop();
                s.push(max(1, 2 * sum));
            }
        }
        int ans = 0;
        while(!s.empty())   ans += s.top(), s.pop();
        return ans;
    }
};

相關文章