美文网首页
栈-N856-括号的分数

栈-N856-括号的分数

作者: 三次元蚂蚁 | 来源:发表于2019-04-03 12:08 被阅读0次

题目

  • 概述:给定一个正确闭合的括号字符串,按如下规则计算括号字符串的分数:

    1. 嵌套字符串的分数等于内嵌字符串分数*2
    2. 并列的字符串分数等于各个字符串分数之和
  • 输入:一个正确闭合的括号字符串,长度范围为[2, 50]

  • 输入子项:'('或')'

  • 输出:该括号字符串的得分

  • 出处:https://leetcode-cn.com/problems/score-of-parentheses/

思路

  • 由于需要存储括号子串的得分,在之后需要的时候使用,所以考虑使用栈

  • 遍历字符串,将每个字符依次入栈:

    1. '(' => 直接入栈
    2. ')' => 依次弹出栈中分数并累加直至遇到'(',将'('出栈,若分数累加和大于0,则将2 * 分数累加和入栈,否则将分数1入栈
  • 该括号字符串的最终得分为栈中元素累加和

代码

class Solution {
    public int scoreOfParentheses(String S) {
        LinkedList<Integer> stack = new LinkedList<>();
        int sum, top;
        for (char c : S.toCharArray()) {
            switch (c) {
                case '(':
                    stack.push(-1);
                    break;
                case ')':
                    top = stack.pop();
                    sum = 0;
                    while (top != -1) {
                        sum += top;
                        top = stack.pop();
                    }
                    if (sum > 0) {
                        stack.push(2 * sum);
                    } else {
                        stack.push(1);
                    }
                    break;
            }
        }
        
        sum = 0;
        while (!stack.isEmpty()) {
            sum += stack.pop();
        }
        
        return sum;
    }
}

相关文章

  • 栈-N856-括号的分数

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

  • 检测成对括号

    检测成对出现的括号 利用栈的知识点遍历字符串,遇到左括号进栈,右括号出栈进出栈的括号不匹配则 return false

  • #检查字符串中括号是否正确配对

    利用栈来实现,若为左括号,将字符入栈,若为右括号,栈顶是否为其对应左括号,若对应,栈顶元素出栈。循环结束,若栈为空...

  • 20. 有效的括号

    自己解法 括号匹配问题,第一想法就是使用栈,左括号入栈,遇到匹配的右括号出栈,如果中间有不符合的右括号,直接返回f...

  • 括号的分数

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

  • 2019-05-12(栈应用 括号匹配 leetcode 20

    括号匹配思路: 1、遇到左边的括号 进栈 ,2、遇到右边的括号获取原来栈 中栈顶元素,与刚遇到的值进行匹配,匹配成...

  • chap3-栈和队列

    括号匹配问题 // 括号匹配,遇到 '\0' 结束// 遇到花、中、圆左括号进栈,遇到花、中、圆右括号检查栈顶元素...

  • 20. Valid Parentheses

    使用栈数据结构: 遇到左括号,需要压栈。 遇到右括号,判断栈顶是否和当前右括号匹配;若不匹配则返回false,否则...

  • 互联网秋招刷题leetcode总结——栈与队列

    栈 括号类问题 20. 有效的括号(easy) 遍历字符串,每次与栈顶括号进行匹配,匹配成功栈顶弹出,否则继续压入...

  • 利用栈解决括号匹配问题

    遍历字符串,遇到左括号,入栈。遇到有括号,出栈。遍历完后,如果栈中还有元素就说明括号不匹配,否则匹配。 demo地...

网友评论

      本文标题:栈-N856-括号的分数

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