A.每日一题:856. 括号的分数

题目链接:856. 括号的分数(中等)

算法原理:

解法:O(N)一次遍历

0ms击败100.00%

时间复杂度O(N)

根据题意总结出以下规律:

():1分,()深度为0

(()):2分,最内层()深度为1

((())):4分,最内层()深度为2

(((()))):8分,最内层()深度为3

因此我们可以直接得出最内层()对整体的贡献:

遇到( 就深度d++,当遇到第一个)时,就可以直接计算最内层()对整体的贡献 2ᵈ,用1<<d表示

累加所有()对结果的贡献,即为返回值

Java代码:

java 复制代码
class Solution {
    //856. 括号的分数
    public int scoreOfParentheses(String S) {
        char[] s=S.toCharArray();
        int d=0;
        int ret=0;
        for(int i=0;i<s.length;i++){
            if(s[i]=='(') d++;
            else{
                d--;
                //计算最里面的()对整体的最终贡献
                if(s[i-1]=='(') ret+=1<<d;
            }
        }
        return ret;
    }
}
相关推荐
kiracrimson1 小时前
选择排序与快速排序:一次选极值,一次分区间
算法·排序算法
liangbo71 小时前
01-Java 集合框架全景:从 Collection 到 Map 一张关系网理清
java
xuxigifxfh1 小时前
HJ15 求int型正整数在内存中存储时1的个数
java·开发语言·华为机考
Wokoo71 小时前
自动化测试入门:核心场景、回归测试与 Web 自动化环境搭建
java·开发语言·测试工具
All for pursuit.1 小时前
【动态规划-8】152.乘积最大子数组
数据结构·c++·算法·leetcode·动态规划
信奥卷王1 小时前
[GESP202512 六级] 路径覆盖
数据结构·算法
我是人✓2 小时前
Spring IOC注解全解析和Spring整合测试单元
java·后端·spring
Lazionr2 小时前
手撕 unordered_set 和 unordered_map,剖析哈希表底层实现
c++·算法
智购科技无人售货机工厂店2 小时前
玻璃瓶饮料破损率突然上升,排查发现是取货口缓冲垫老化了~YH
java·开发语言·人工智能·python·eclipse