【栈的应用】括号的分数
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();}
}
【栈的应用】括号的分数相关推荐
- LeetCode 算法 856. 括号的分数
856. 括号的分数 Ideas 遇到括号那基本就是用栈了. 括号的分数会因为深度的增加而成倍增加,所以利用栈的时候需要记录深度. 遇到一个(的时候,将深度+1,并且新的深度得分置为0,遇到一个)的时 ...
- 力扣解法汇总856. 括号的分数
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 栈应用之 括号匹配问题(Python 版)
栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...
- 数据结构实验之栈四:括号匹配
数据结构实验之栈四:括号匹配 Description 给你一串字符,不超过50个字符,可能包括括号.数字.字母.标点符号.空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配. Inp ...
- 栈的应用--括号匹配的检验
算法中设置一个栈,每次读入一个括号,若是右括号,则或者与置于栈顶的括号匹配,或者是不合法的情况,若是左括号,则入栈.若算法结束,栈是空的,则括号合法. 括号匹配函数 Status bracket_ma ...
- sdut 数据结构实验之栈四:括号匹配
数据结构实验之栈四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description ...
- c语言栈训练题目:括号匹配
c语言栈训练题目:括号匹配 基本思路: 当前字符不是括号,不做处理: 当前字符是左括号,则进栈: 当前字符是右括号:若栈空,则表明该"右括号"多余,不匹 配,结束:否则和栈顶元素比 ...
- 栈的应用 括号匹配 c++
在算术表达式中,除了加.减.乘.除等运算外,往往还有括号.包括有大括号{},中括号[],小括号(),尖括号<>等. 对于每一对括号,必须先左边括号,然后右边括号:如果有多个括号,则每种类型 ...
- 栈应用之括号匹配(C语言)
{ ( hey! )[不管是电子表还是劳力士,他们的指针都是一样转动的.] } ) 宁是否发现了不舒服的地方,oh这种事是无法让强迫症忍受的,没错,这里的括号是不匹配的,就像C语言中,如果你输入的括号 ...
最新文章
- Python零基础入门(4)——分支与循环练习题
- php和python对比-PHP和Python性能比较:放弃PHP改用Python
- python一个月能学成嘛-一个月可以学好基础的Python吗?
- Windows 驱动开发头文件wdfchildlist.h
- 耳朵经济在生活中的应用
- H264关于RTP协议的实现
- 十大Ajax框架 排名不分先后
- java百度结果的正则表达式_java正则表达式
- selenium-webdriver层级定位元素
- WebStorm神器啊,一旦上手根本停不下来
- Hbase安装与伪分布式配置
- WinRunner介绍 (不断更新)
- android分享截屏到微信,Android截屏分享功能
- vmware虚拟机WinXp sp3的系统cpu占用100%的解决方案
- 路由器登陆密码破解方法
- 全国软考——软件评测师有感
- 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider
- 英伟达JETSON XAVIER NX使用小记
- 【小睿精选·第四期】谷歌开源更快、更高效的 TensorFlow 运行时 TFRT
- 5.分别画出下列二次曲面
热门文章
- 论坛php board,Crossday Discuz! Board 论坛系统Discuz!
- 微信支付一 :公众号支付1
- Zeal离线文档下载,以及报错解决方法
- 抽象类和抽象方法 abstract类和abstract方法
- 自动化测试+性能面试题整理--个人最新【持续更新】
- android蓝牙传文件在哪里找,手机蓝牙传输的文件在哪里_华为手机蓝牙传输记录在哪-系统城...
- iOS每日总结博客版:iOS开发历程中了解和学习的文章
- 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
- 西安,已达 100 %。
- SEO优化怎么做?【两步解决】