zoukankan      html  css  js  c++  java
  • LeetCode:括号的分数【856】

    LeetCode:括号的分数【856】

    题目描述

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

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

    示例 1:

    输入: "()"
    输出: 1
    

    示例 2:

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

    示例 3:

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

    示例 4:

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

    提示:

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

    题目分析

    我们可以使用递归来解决这个问题。通过分析题目,我们发现有三种情况:

    比如:

    SCORE("()(()())")

      =SCORE("()")+SCORE("(()())")

      =1+2*SCORE("()()")

      =1+2*(SCORE("()")+SCORE("()"))

      =1+2*2

      =5

    说明:

    我们在代码中怎么来识别,(()())这种情况呢,如果从最左边到倒数第二位是不平衡的,那么加上最后一位一定是平衡的,这也说明,第一位和最后一位是一个大括号,那当然是CASE1这种情况。

    Java题解

    class Solution {
     public int scoreOfParentheses(String S) {
            return score(S,0,S.length()-1);
        }
    
        public int score(String S,int left,int right)
        {
            if(right-left==1)
                return 1;
            int b = 0;
            for(int i=left;i<right;i++)
            {
                if(S.charAt(i)=='(')
                    b++;
                if(S.charAt(i)==')')
                    b--;
                if(b==0)
                    return score(S,left,i)+score(S,i+1,right);
            }
            return 2*score(S,left+1,right-1);
        }
    }
  • 相关阅读:
    推荐系统多样性指标衡量
    deepfm代码参考
    tf多值离散embedding方法
    样本加权
    tensorflow 分布式搭建
    优化器
    协同过滤代码
    NLP
    双线性ffm
    各种总结
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9950961.html
Copyright © 2011-2022 走看看