美文网首页
856. 括号的分数(Python)

856. 括号的分数(Python)

作者: 玖月晴 | 来源:发表于2021-02-22 20:55 被阅读0次

难度:★★★☆☆
类型:字符串
方法:栈

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

j题目

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

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

示例 1:

输入: "()"
输出: 1

示例 2:

输入: "(())"
输出: 2

示例 3:

输入: "()()"
输出: 2

示例 4:

输入: "(()(()))"
输出: 6

提示:

S 是平衡括号字符串,且只含有 ( 和 ) 。
2 <= S.length <= 50

解答

括号的问题可以用栈解决。题目中已经说明括号字符串是合法的,我们无需考虑别的。

括号存在包含关系时内部分数乘以2,存在并列关系时分数相加。

我们准备一个栈,栈里存储的是括号分数,从左到右遍历括号,每当遇到一个左括号,则把数字0压入栈中,每当遇到一个右括号,弹出栈顶元素,做以下处理:

  1. 如果被弹出的栈顶元素是零,说明这个零是刚刚被压入栈中的,当前的右括号直接与其对应的左括号相邻,当前元素的分数记录为1;

  2. 如果被弹出栈顶的元素不是零,说明当前右括号与其对应的左括号隔着一些括号,这时弹出的栈顶元素需要乘以2。

将计算得到的数字与栈顶元素相加,因为存在并列关系。

class Solution(object):
    def scoreOfParentheses(self, S):
        stack = [0]

        for x in S:
            if x == '(':
                stack.append(0)
            else:
                v = stack.pop()
                stack[-1] += 1 if v == 0 else 2 * v

        return stack.pop()

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

相关文章

  • 856. 括号的分数(Python)

    难度:★★★☆☆类型:字符串方法:栈 力扣链接请移步本题传送门[https://leetcode-cn.com/p...

  • 856. 括号的分数

    题目链接[https://leetcode-cn.com/problems/score-of-parenthese...

  • 【教3妹学算法】856. 括号的分数

    3妹:2哥,今天周日,出去玩一玩,爬爬山怎么样。2哥:还出去玩呢,现在全国疫情又反复了, 前段时间上海疫情刚控制住...

  • 括号的分数

    给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: 示例 1: 输入: "()"输出: 1 示例 2: 输...

  • Latex 符号1结构

    上标,下标 平方根 顶部线,底部线 上括号,下括号 向量 分数

  • 栈-N856-括号的分数

    题目 概述:给定一个正确闭合的括号字符串,按如下规则计算括号字符串的分数:嵌套字符串的分数等于内嵌字符串分数*2并...

  • Python 2、3的区别

    1、python2:print 函数可以不加括号 python3:print函数必须要加括号 2、python2:...

  • Python 学习总结

    python方面 python中没有花括号,是靠缩进来代替花括号,语句结尾不需要加; python声明变量的时候不...

  • SyntaxError: Missing parentheses

    原因:python2.X版本与python3.X版本print的格式不同导致,带括号和不带括号区别 例如: pyt...

  • Day92:括号的分数

    http://www.zglg.work/?p=811[http://www.zglg.work/?p=811] ...

网友评论

      本文标题:856. 括号的分数(Python)

      本文链接:https://www.haomeiwen.com/subject/zfcutltx.html