LeetCode 856 括号的分数[栈] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 856 括号的分数[栈] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路
从模拟角度出发,整个操作就是入栈出栈的过程,由于有符号和数字的存在,并且数字一定大于零,所以不妨把左括号设为-1,遍历字符串,遇到左括号就入栈(即放入-1)。遇到右括号需要判断,如果栈顶是左括号,拿出左括号放入1,否则,先把栈顶的所有数字加起来,此时栈顶还有左括号的话,执行(A)操作,最后把栈内所有的数字加起来返回即可(括号一定都匹配完成了),代码如下:
代码
class Solution
public:
int scoreOfParentheses(string s)
stack<int> st;
for(int i = 0; i < s.size(); i ++)
// 左括号入栈
if(s[i] == '(')
st.push(-1);
else // 右括号分情况判断
// 如果栈顶是左括号,拿出左括号放入1
if(st.top() == -1)
st.pop();
st.push(1);
else // 把栈顶的所有数字加起来
int num = 0;
while(st.top() > 0 && !st.empty())
num += st.top();
st.pop();
// 还有左括号执行(A)操作
if(!st.empty())
num *= 2;
st.pop();
st.push(num);
int sum = 0;
while(!st.empty())
sum += st.top();
st.pop();
return sum;
;
以上是关于LeetCode 856 括号的分数[栈] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 856 括号的分数[栈] HERODING的LeetCode之路
LeetCode 856 括号的分数[栈] HERODING的LeetCode之路
LeetCode 870. 优势洗牌(根据数值对索引排序)/ 856. 括号的分数(栈) / 801. 使序列递增的最小交换次数(动态规划)
LeetCode 870. 优势洗牌(根据数值对索引排序)/ 856. 括号的分数(栈) / 801. 使序列递增的最小交换次数(动态规划)