leetcode讲解--856. Score of Parentheses

题目

Given a balanced parentheses string S, compute the score of the string based on the following rule:java

() has score 1
AB has score A + B, where A and B are balanced parentheses strings.
(A) has score 2 * A, where A is a balanced parentheses string.code

Example 1:leetcode

Input: "()"
Output: 1

Example 2:get

Input: "(())"
Output: 2

Example 3:string

Input: "()()"
Output: 2

Example 4:io

Input: "(()(()))"
Output: 6

Note:class

  1. S is a balanced parentheses string, containing only ( and ).
  2. 2 <= S.length <= 50

题目地址变量

讲解

这道题分类都有点难,能够算在智力题里面。主要是要理解一个套路:sed

"(()(()))" -> "(())" + "((()))" = 2 + 4

这样就会发现,能够维护一个层数变量,而后遍历的时候,遇到'('就加一,遇到")"就减一,遇到"()"这一对,就至关于找到了一组。而后把找到的全部组相加就好了。遍历

java代码

class Solution {
    public int scoreOfParentheses(String S) {
        int d = -1;
        int result = 0;
        for(int i=0;i<S.length();i++){
            d += S.charAt(i)=='('?1:-1;
            if(S.charAt(i)=='(' && S.charAt(i+1)==')'){
                result += 1 << d;
            }
        }
        return result;
    }
}
相关文章
相关标签/搜索