当前位置: 首页 > news >正文

LeetCode高频题:子串权值定义为,最长有效括号子序列的长度,请你返回字符串s的所有子串权值的和是多少

LeetCode高频题:子串权值定义为,最长有效括号子序列的长度,请你返回字符串s的所有子串权值的和是多少?

提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目
互联网大厂们在公司养了一大批ACM竞赛的大佬们,吃完饭就是设计考题,然后去考应聘人员,你要做的就是学基础树结构与算法,然后打通任督二脉,以应对波云诡谲的大厂笔试面试题!
你要是不扎实学习数据结构与算法,好好动手手撕代码,锻炼解题能力,你可能会在笔试面试过程中,连题目都看不懂!比如华为,字节啥的,足够让你读不懂题
在这里插入图片描述

基础知识:
【1】括号匹配问题:判断一个字符串是否为有效的括号匹配
【2】括号匹配问题:括号字符串是否有效匹配,无效的话还需要加多少个括号才能完全匹配
【3】括号匹配问题:括号字符串的最大匹配嵌入深度是多少
【4】括号匹配问题:括号字符串的有效匹配子串最大长度是多少


文章目录

  • LeetCode高频题:子串权值定义为,最长有效括号子序列的长度,请你返回字符串s的所有子串权值的和是多少?
    • @[TOC](文章目录)
  • 题目
  • 一、审题
  • 二、解题
  • 总结

题目

在这里插入图片描述
在这里插入图片描述


一、审题

示例:如上,注意是子序列,不是子串哦,子串超级困难【看上面【4】,非常重要】


二、解题

分析
())())

你看看这个有效子序列最长的咋搞

其实你中途给统计左括号有几个?left个
然后遇到右括号,如果left>0,则可以消耗一个left括号,配对为一对,right=1记录了
如果遇到右括号,发现left<=0,显然没有办法配对,right就不要增加了

在这里插入图片描述
最长的有效括号子序列长度就是right的2倍,因为配对呗

所以
你只需要遍历给你的字符串s的每一个子串,查上面的最长有效子序列长度,把结果加ans就行

手撕代码:

public static class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String s = in.nextLine();//())())
            int ans = 0;
            for (int i = 0; i < s.length(); i++) {
                for (int j = i; j < s.length(); j++) {
                    ans += f(s.substring(i, j + 1));
                }
            }
            System.out.println(ans);
        }

        //最长括号子序列长度
        public static int f(String s){
            int l = 0, r = 0;
            char[] str = s.toCharArray();
            for (int i = 0; i < str.length; i++) {
                if (str[i] == '(') l++;
                else if (l > 0) {
                    l--;
                    r++;
                }
            }
            return r << 1;
        }
    }

测试:
在这里插入图片描述

看看朋友们今天京东的秋招笔试题目好像也不难吧?


总结

提示:重要经验:

1)括号匹配问题,我多次讲过,这是最新的最长有效括号子序列长度,简单,那个最长有效括号子串很难
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

相关文章:

  • 使用Python,dlib进行对象实时追踪
  • Pytorch量化感知训练
  • 设计模式——迭代器模式
  • STM32F407的时钟
  • Opencv形态学——腐蚀、膨胀、开运算与闭运算、梯度运算、礼帽、黑帽
  • [Django开源学习 1]django-vue-admin
  • JavaEE初阶:网络编程套接字
  • JAVA猎才学员成长心得分享
  • 2022年0903我的SpringBoot框架入门的第一个程序
  • 【高阶数据结构】并查集的实现(含压缩路径)及其应用-C++版本
  • Java——线程不安全的原因(图解)
  • [数据结构]~双向+循环链表从(0~1)
  • 【开学季】再见大一,你好大二 | 完成自己的未完成
  • java毕业设计网站SSM版学生选课系统[包运行成功]
  • 【计算机网络】第六章:应用层
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【面试系列】之二:关于js原型
  • 4个实用的微服务测试策略
  • October CMS - 快速入门 9 Images And Galleries
  • Python语法速览与机器学习开发环境搭建
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • React-生命周期杂记
  • vue:响应原理
  • 从0到1:PostCSS 插件开发最佳实践
  • 分布式事物理论与实践
  • 力扣(LeetCode)22
  • 力扣(LeetCode)56
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 删除表内多余的重复数据
  • 探索 JS 中的模块化
  • 线上 python http server profile 实践
  • 最近的计划
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # centos7下FFmpeg环境部署记录
  • (补)B+树一些思想
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (力扣)1314.矩阵区域和
  • (力扣题库)跳跃游戏II(c++)
  • (论文阅读11/100)Fast R-CNN
  • (算法)求1到1亿间的质数或素数
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)3D模板阴影原理
  • (转)用.Net的File控件上传文件的解决方案
  • (转)重识new
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET MVC第五章、模型绑定获取表单数据
  • .net2005怎么读string形的xml,不是xml文件。