1. 题目描述:

给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:

  • () 得 1 分。
  • AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。
  • (A) 得 2 * A 分,其中 A 是平衡括号字符串。

来源:https://leetcode.cn/problems/score-of-parentheses

示例:

2. 解题思路

括号匹配的问题,可以使用栈来模拟,本题的难点在于如何计算贡献率,解决方式为使用栈来记录每个括号位置的分数。

(1)遇到 ‘(’ , 则当前括号的分数为0, 0 入栈
(2)遇见 ‘)’ , 栈顶出栈。当前节点贡献的分数有两种计算情况

  • 若其前一个位置为 ‘(’ ,则当前位置括号的贡献值为 :栈顶贡献值+1
  • 若其前一个位置为 ‘)’,则当前节点的贡献值为 :栈顶贡献值*2

注意:本题中每个括号 ‘)’ 存储的是到当前位置的所有分数,因此在分数入栈时,还要将其自身的上述分数值再加上其前一栈顶的分数值,并将当前栈顶出栈。

最终返回最后的栈顶的元素值,即为最终结果

三、代码

class Solution {public int scoreOfParentheses(String s) {Deque<Integer> deque = new ArrayDeque<>();char pre = ')';for(int i=0; i<s.length(); i++){if(s.charAt(i) == '('){deque.addLast(0);pre = '(';} else{int cur = deque.pollLast();if(pre == '('){cur++;} else{cur = cur * 2;}if(!deque.isEmpty()) {deque.addLast(deque.pollLast() + cur);} else{deque.addLast(cur);}pre = ')';}}return deque.pollLast();}
}

【栈的应用】括号的分数相关推荐

  1. LeetCode 算法 856. 括号的分数

    856. 括号的分数 Ideas 遇到括号那基本就是用栈了. 括号的分数会因为深度的增加而成倍增加,所以利用栈的时候需要记录深度. 遇到一个(的时候,将深度+1,并且新的深度得分置为0,遇到一个)的时 ...

  2. ​力扣解法汇总856. 括号的分数

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  3. 栈应用之 括号匹配问题(Python 版)

    栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...

  4. 数据结构实验之栈四:括号匹配

     数据结构实验之栈四:括号匹配 Description 给你一串字符,不超过50个字符,可能包括括号.数字.字母.标点符号.空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配. Inp ...

  5. 栈的应用--括号匹配的检验

    算法中设置一个栈,每次读入一个括号,若是右括号,则或者与置于栈顶的括号匹配,或者是不合法的情况,若是左括号,则入栈.若算法结束,栈是空的,则括号合法. 括号匹配函数 Status bracket_ma ...

  6. sdut 数据结构实验之栈四:括号匹配

    数据结构实验之栈四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description ...

  7. c语言栈训练题目:括号匹配

    c语言栈训练题目:括号匹配 基本思路: 当前字符不是括号,不做处理: 当前字符是左括号,则进栈: 当前字符是右括号:若栈空,则表明该"右括号"多余,不匹 配,结束:否则和栈顶元素比 ...

  8. 栈的应用 括号匹配 c++

    在算术表达式中,除了加.减.乘.除等运算外,往往还有括号.包括有大括号{},中括号[],小括号(),尖括号<>等. 对于每一对括号,必须先左边括号,然后右边括号:如果有多个括号,则每种类型 ...

  9. 栈应用之括号匹配(C语言)

    { ( hey! )[不管是电子表还是劳力士,他们的指针都是一样转动的.] } ) 宁是否发现了不舒服的地方,oh这种事是无法让强迫症忍受的,没错,这里的括号是不匹配的,就像C语言中,如果你输入的括号 ...

最新文章

  1. Python零基础入门(4)——分支与循环练习题
  2. php和python对比-PHP和Python性能比较:放弃PHP改用Python
  3. python一个月能学成嘛-一个月可以学好基础的Python吗?
  4. Windows 驱动开发头文件wdfchildlist.h
  5. 耳朵经济在生活中的应用
  6. H264关于RTP协议的实现
  7. 十大Ajax框架 排名不分先后
  8. java百度结果的正则表达式_java正则表达式
  9. selenium-webdriver层级定位元素
  10. WebStorm神器啊,一旦上手根本停不下来
  11. Hbase安装与伪分布式配置
  12. WinRunner介绍 (不断更新)
  13. android分享截屏到微信,Android截屏分享功能
  14. vmware虚拟机WinXp sp3的系统cpu占用100%的解决方案
  15. 路由器登陆密码破解方法
  16. 全国软考——软件评测师有感
  17. 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider
  18. 英伟达JETSON XAVIER NX使用小记
  19. 【小睿精选·第四期】谷歌开源更快、更高效的 TensorFlow 运行时 TFRT
  20. 5.分别画出下列二次曲面

热门文章

  1. 论坛php board,Crossday Discuz! Board 论坛系统Discuz!
  2. 微信支付一 :公众号支付1
  3. Zeal离线文档下载,以及报错解决方法
  4. 抽象类和抽象方法 abstract类和abstract方法
  5. 自动化测试+性能面试题整理--个人最新【持续更新】
  6. android蓝牙传文件在哪里找,手机蓝牙传输的文件在哪里_华为手机蓝牙传输记录在哪-系统城...
  7. iOS每日总结博客版:iOS开发历程中了解和学习的文章
  8. 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
  9. 西安,已达 100 %。
  10. SEO优化怎么做?【两步解决】