华为OD机试 - 最大括号深度 - 栈stack(Java 2023 B卷 100分)

news2024/11/12 9:21:10

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出
      • 3、说明

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

现有一字符串仅由(、)、 {、}、[、 ]六种括号组成。

若字符串满足以下条件之一,则为无效字符串:任一类型的左右括号数量不相等

存在未按正确顺序先左(,后右)闭合的括号,输出括号的最大嵌套深度,若字符串无效则输出0。

0<=字符串长度<=100000

二、输入描述

一个只包括(、)、 {、}、[、 ]的字符串。

三、输出描述

整数,最大的括号深度

输入输出说明
[]1有效字符串,最大嵌套深度1
[{[]}()]3有效字符串,最大嵌套深度3

四、解题思路

先明确一点,最大括号深度指的是有效闭合括号的嵌套深度,而不是有效闭合括号的组合数。

  1. 利用栈的特效;
  2. 如果是左括号{[(,则加入栈stack,有效深度+1;
  3. 如果是右括号,则弹出栈顶元素;
    • 与当前右括号进行比较;
    • 如果匹配,弹出栈顶元素,有效深度-1;
    • 如果不匹配,直接返回0;
    • 取最大深度max;
  4. 如果不是有效括号,则输出"input error";
  5. 遍历完毕后,栈stack为空时,表示所有左右括号都可配对,输出最大深度max即可,否则输出0

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String input = sc.nextLine();
    Stack<Character> stack = new Stack<>();
    Character pop;
    // 有效深度,最大深度
    int deep = 0, max = 0;
    for (int i = 0; i < input.length(); i++) {
        char ch = input.charAt(i);
        switch (ch) {
            // 如果是左括号{[(,则加入栈stack;
            case '{':
            case '[':
            case '(':
                deep++;
                stack.add(ch);
                break;
                // 如果是右括号,则弹出栈顶元素;
            case '}':
                pop = stack.pop();
                if (pop != null && pop == '{') {
                    deep--;
                    break;
                } else {
                    System.out.println(0);
                    return;
                }
            case ']':
                pop = stack.pop();
                if (pop != null && pop == '[') {
                    deep--;
                    break;
                } else {
                    System.out.println(0);
                    return;
                }
            case ')':
                pop = stack.pop();
                if (pop != null && pop == '(') {
                    deep--;
                    break;
                } else {
                    System.out.println(0);
                    return;
                }
            default:
                // 如果不是有效括号,则输出"input error";
                System.out.println("input error");
                return;
        }
        // 取最大深度max
        max = Math.max(max, deep);
    }

    // 遍历完毕后,栈stack为空时,表示所有左右括号都可配对,输出最大深度max即可,否则输出0
    if (stack.isEmpty()) {
        System.out.println(max);
    } else {
        System.out.println(0);
    }
}

六、效果展示

1、输入

[{()}[{[][]}]{}]

2、输出

4

3、说明

明确一点,最大括号深度指的是有效闭合括号的嵌套深度,而不是有效闭合括号的组合数。

在这里插入图片描述


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1079690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入剖析 | 近期法院判决是不是司法部门有意平衡 SEC 监管天平

出品 &#xff5c;欧科云链研 究院 作者&#xff5c;Matthew Lee 9月27日&#xff0c;SEC 主席 Gary Gensler 参加了美国众议院金融服务委员会听证会。听证会审查 SEC 自 2021 年 10 月 5 日以来的一段时间内的监管发展、规则制定和活动&#xff0c;其中包括 SEC 提议修改“交易…

python图片:获得颜色占比,图片尺寸

꧂ 获得颜色占比&#xff0c;图片尺寸꧁ 要获取图片的尺寸、大小和颜色占比大于0.001的颜色值&#xff0c;可以基于上一个回答中使用Pillow库的代码进行修改。 from PIL import Image# 输入图片路径 image_path input("请输入图片路径: ")try:# 打开图片文件image …

零售超市商家怎么做微信小程序

随着互联网的发展&#xff0c;越来越多的零售超市商家开始关注如何借助微信小程序引流&#xff0c;以提高销售额和客户满意度。下面将介绍几个策略&#xff0c;帮助零售超市商家借助微信小程序实现引流。 首先&#xff0c;商家需要开发一款适合自己的微信小程序。小程序是一种轻…

win11右键菜单显示更多的设置方法

用了一年多win11系统了&#xff0c;Win11最大的变化之一莫过于右键菜单发生了变化。右键菜单很多时候需要点两次&#xff0c;实在是反人类&#xff0c;太麻烦了。 必须使用“显示更多选项”的右键菜单。 今天分享一个使用命令行更改右键菜单显示更多的设置方法&#xff1a; …

生鲜店怎么做微信小程序

在当今数字化时代&#xff0c;微信小程序已经成为了一种新的商业形态&#xff0c;为各类商家提供了丰富的获客和拉新手段。对于生鲜店来说&#xff0c;如何借助微信小程序来吸引新客户并提高销售额&#xff0c;成为了必须面对的重要问题。本文将为你提供一些实用的策略和建议&a…

【C/C++】 const

1、C语言的const 1、在C语言中 const修饰的局部变量保存在栈区 虽然不能通过const修饰的变量去修改栈区内容,但是可以 通过地址去修改 2、const修饰的全局变量是保存在常量区,不能通过变量名去修改.也不能通过地址去修改 3 、const修饰的全局变量,如果其他文件想使用,直接exte…

空间精密定位与导航VR模拟培训软件突破了时空限制

随着科技的飞速发展&#xff0c;测绘遥感技术逐渐成为地理信息获取的重要手段。然而&#xff0c;传统的测绘展示方式存在着诸多局限性&#xff0c;无法充分展现出测绘数据的精细化和多元化&#xff0c;成为为解决这一难题的有效途径。 测绘工程专业作为时下就业率爆棚的专业之一…

01、python基础知识:

1、注释 多行注释 单行注释 2、 数据类型 3、标识符 关键字 常用的标识符&#xff1a; 常用关键字&#xff1a; 4、输入输出 4.1 格式化输出: 格式化符号 占位符&#xff1b; 5、运算符、 数据类型转化&#xff1a; 1、字符串&#xff1a; 1.1、格式&#xff1a; 单引号、…

css实现排行榜样式(vue组件)

先看效果图&#xff1a; <template><div class"lawyer-refund-wrap"><div class"content"><divv-for"(item, index) in dataList" :key"index":style"{width: calc(100% - ${(index 1) * 10}px)}"c…

VGG卷积神经网络实现Cifar10图片分类-Pytorch实战

前言 当涉足深度学习&#xff0c;选择合适的框架是至关重要的一步。PyTorch作为三大主流框架之一&#xff0c;以其简单易用的特点&#xff0c;成为初学者们的首选。相比其他框架&#xff0c;PyTorch更像是一门易学的编程语言&#xff0c;让我们专注于实现项目的功能&#xff0…

计算机毕业设计选题推荐-springboot 教材管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Android项目打包aar(kts)

目录 app build.gradle.kts AndroidManifests 按步骤生成 生成结果 双击查看内容 app build.gradle.kts plugins {id("com.android.application")id("org.jetbrains.kotlin.android")id("kotlin-parcelize")id("kotlin-kapt") …

推荐开源工具带带弟弟ocr_ddddocr_各种验证码都可以识别_滑动_点击_等等---验证码识别工作笔记001

这个很强大了,常见的各种验证码都可以识别,如果你项目上也有需要,比如需要实现系统的自动登录,这个时候就很有用了,这里仅仅给出方案,具体如何用,用的时候在做研究吧,好东西要记录,分享给需要的人.使用的时候 自己去查一下如何使用非常简单. 支持点击的验证码,支持数字验证码就…

基于SSM的生活缴费系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

spring boot+ vue位置信息大数据综合管理平台源码

spring boot vue位置信息大数据综合管理平台源码 UWB技术的人员定位系统源码 智慧工厂是产业升级的外在表现形式&#xff0c;利用物联网技术加强信息管理的新模式&#xff0c;人员定位管理通过物联网技术、位置信息大数据的综合处理应用&#xff0c;在智慧工厂人员管理方面具有…

nexus部署私库及上传和拉包处理

部署不在此赘述&#xff0c;部署好后地址为&#xff1a;http://ip:8081/nexus 默认账号和密码&#xff1a;用户名:admin 密码:admin123 nexus里可以配置3种类型的仓库&#xff0c;分别是proxy、hosted、group proxy是远程仓库的代理。比如说在nexus中配置了一个central reposi…

c++视觉处理---霍夫变换

霍夫直线变换的函数 HoughLines 是OpenCV库中用于执行霍夫直线变换的函数。霍夫直线变换用于检测图像中的直线。下面是该函数的基本用法&#xff1a; cv::HoughLines(image, lines, rho, theta, threshold);image: 输入的二值图像&#xff0c;通常是通过边缘检测算法生成的。…

众佰诚:抖音开通橱窗的要求和流程有什么

在当下的社交媒体环境中&#xff0c;抖音作为一款短视频分享平台&#xff0c;已经吸引了大量的用户和商家。其中&#xff0c;抖音橱窗的功能使商家能够以一种更直接和吸引人的方式展示和销售他们的产品。下面&#xff0c;我们将详细介绍一下抖音橱窗的开通要求和流程。 开通要求…

SCI论文高效写作:Citespace、vosviewer和R语言在文献调研与论文撰写中的应用

文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体&#xff0c;注重量化的综合性知识体系。特别是&#xff0c;信息可视化技术手段和方法的运用&#xff0c;可直观的展示主题的研究发展历程、研究现状、研究…

Unity中Shader不同灯光类型的支持与区分

文章目录 前言一、在开始之前做一些准备1、在上一篇文章的场景基础上&#xff0c;增加一个Unity默认的球体作为对照组2、创建一个点光源&#xff0c;用来看点光源的影响 对 Unity默认的Shader效果 和 我们实现的Shader效果 之间的不同 二、点光源的适配把上一篇文章中 ForwardB…