LeetCode 856. 括号的分数
Posted hlk09
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 856. 括号的分数相关的知识,希望对你有一定的参考价值。
给定一个平衡括号字符串 S
,按下述规则计算该字符串的分数:
()
得 1 分。AB
得A + B
分,其中 A 和 B 是平衡括号字符串。(A)
得2 * A
分,其中 A 是平衡括号字符串。
由于问题是递归定义的,所以可以很简单地用递归去解这个题。
用栈解决的话,如果遇到左括号,则入栈。如果遇到右括号,判断栈顶是不是右括号,如果是则说明是(),出栈并压数字1;否则说明是(A)型,将内部数字全部加起来再次入栈。最后栈内是各种数字,加起来就可以了。
class Solution { public: int scoreOfParentheses(string S) { stack<string> s; for(char& i : S) { if(i == ‘(‘) { s.push("("); } else { if(!s.empty() && s.top() == "(") { s.pop(); s.push("1"); } else { int sum = 0; while(!s.empty() && s.top() != "(") { sum += stoi(s.top()); s.pop(); } if(!s.empty()) { s.pop(); } s.push(to_string(sum * 2)); } } } int res = 0; while(!s.empty()) { res += stoi(s.top()); s.pop(); } return res; } };
以上是关于LeetCode 856. 括号的分数的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—856. 括号的分数(栈)—day03
Leetcode刷题100天—856. 括号的分数(栈)—day03
leetcode 856. 括号的分数(Score of Parentheses)
LeetCode 856 括号的分数[栈] HERODING的LeetCode之路
LeetCode 856 括号的分数[栈] HERODING的LeetCode之路
LeetCode 870. 优势洗牌(根据数值对索引排序)/ 856. 括号的分数(栈) / 801. 使序列递增的最小交换次数(动态规划)