华为OD机试 - 求字符串中所有整数的最小和 - 逻辑分析(Java 2023 B卷 100分)

news2024/10/7 16:20:44

在这里插入图片描述

目录

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

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

专栏导读

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

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

一、题目描述

输入字符串s,输出s中包含所有整数的最小和。
说明:

字符串s,只包含 a-z A-Z ± ;合法的整数包括

  1. 正整数 一个或者多个0-9组成,如 0 2 3 002 102
  2. 负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023

二、输入描述

包含数字的字符串。

三、输出描述

所有整数的最小和。

输入输出说明
bb1234aa101+2+3+3=10
b12-34aa-311+2+(-34) = -31

四、解题思路

题读百遍,其义自见。

  1. 输入一个包含数字的字符串;
  2. 求出字符串中所有数字之和的最小值

比如:

b12-34aa
1+2+(-34) = -31就是最小值。

也就是说,如果是整数,直接相加,如果是负数,拼接成最小负数,再相加即可。

简单。

解题思路:

核心思想:如果是整数,直接相加,如果是负数,拼接成最小负数,再相加即可。

  1. 输入一行只包含字母、数字、符号-的字符串;
  2. 如果当前字符是-,表示负数的开始;
  3. 定义一个StringBuilder,用于拼接最小负数;
  4. 定义一个集合list,存储最小整数和最小负数;
  5. 如果是负数,为保证数字之和最小,需要拼接最小负数;
    • 如果是数字,继续拼接负数;
    • 如果不是数字,则表示最大负数拼接完毕,下次重新拼接;
  6. 如果是正数,为保证数字之和最小,直接拼接;
  7. 通过java8 Stream表达式(简洁/方便/上档次)快速求数字list之和;
  8. 输出所有整数的最小和。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        // 拼接最小负数
        StringBuilder negativeBuilder = new StringBuilder();
        // 包含最小正整数、最小负数
        List<String> list = new ArrayList<>();
        // 是否是负数
        boolean negativeFlag = false;
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            // 负数标识符
            if(c=='-'){
                negativeFlag = true;
                negativeBuilder.append("-");
                continue;
            }

            // 如果是负数,为保证数字之和最小,需要拼接最小负数
            if(negativeFlag){
                // 如果是数字,继续拼接负数
                if(Character.isDigit(c)) {
                    negativeBuilder.append(c);
                }else{// 如果不是数字,则表示最大负数拼接完毕,下次重新拼接
                    list.add(negativeBuilder.toString());
                    negativeFlag = false;
                    negativeBuilder = new StringBuilder();
                }
            }else {// 如果是正数,为保证数字之和最小,直接拼接
                if(Character.isDigit(c)){
                    list.add(String.valueOf(c));
                }
            }
        }

        System.out.println(list);

        int sum = list.stream().mapToInt(Integer::parseInt).sum();
        System.out.println(sum);
    }
}

六、效果展示

1、输入

b12-34aA1C79-3A

2、输出

-17

3、说明

获取最小整数和最小负数。

[1, 2, -34, 1, 7, 9, -3]

求其和为-17

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】

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

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

在这里插入图片描述

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

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

相关文章

一个免费好用的全域数据集成平台

文章目录 全域数据集成平台RestCloud一、产品架构一、数据源管理二、离线数据集成三、实时数据集成四、监控中心五、对比总结六、离线数据集成实战1.新建mysql数据源2.离线数据集成3.执行同步数据 大家好&#xff0c;我是脚丫先生 (o^^o) 小伙伴们都知道&#xff0c;在之前数据…

无涯教程-机器学习 - 矩阵图函数

相关性是有关两个变量之间变化的指示&#xff0c;在前面的章节中&#xff0c;无涯教程讨论了Pearson的相关系数以及相关的重要性&#xff0c;可以绘制相关矩阵以显示哪个变量相对于另一个变量具有较高或较低的相关性。 在以下示例中&#xff0c;Python脚本将为Pima印度糖尿病数…

VMware虚拟机的安装以及安装CentOS系统

VMware虚拟机是一款非常受欢迎的虚拟化软件&#xff0c;它可以模拟一台计算机运行在另一台计算机上&#xff0c;从而实现在一台物理机器上运行多个虚拟机的目的。在本文中&#xff0c;我们将会介绍如何安装VMware虚拟机并在其中安装CentOS操作系统。 文章目录 &#x1f4c0;VMw…

Linux用户与组管理(03)(八)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、组管理 1、概述 2、用户信息查看 总结 前言 今天是学习用户与组管理的最后一节课&#xff0c;这节课主要是组管理的内容&#xff0c;希望能一起学习&#xff…

跨足多领域:人脸美颜SDK在医疗、娱乐和安全中的应用案例

随着科技的不断发展&#xff0c;人脸美颜技术不再局限于满足用户的审美需求&#xff0c;而是在医疗、娱乐和安全领域展现出了广泛的应用前景。本文将深入探讨人脸美颜SDK 在这三个领域中的创新应用案例&#xff0c;展示其在不同场景中的独特价值和潜力。 一、医疗领域 1、皮…

Leetcode86. 分隔链表

给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台…

2.3 【MySQL】命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中&#xff0c;但是有一些选项是专门为命令行设计的&#xff0c;比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的&#xff0c;再放在配置文件中使用就没啥意义了。 如果同一个启动选…

winpe还原windows系统备份

准备工作 用大白菜制作一个启动u盘&#xff0c;里面可以镜系统备份文件 插入电脑&#xff0c;启动&#xff0c;按f11&#xff08;这个快捷键因电脑而异&#xff09;&#xff0c;选择启动u盘&#xff0c;进入winpe 硬盘格式化 选择分区助手软件 选择硬盘&#xff0c;右键选择【…

Spring Bean对象生命周期

文章目录 前言基础通俗理解bean作用域 前言 最近学习spring的一些基础概念&#xff0c;所以就先了解了bean对象的概念&#xff0c;而且发现这个里面涉及到很多的内容&#xff0c;比如在spring中一个bean对象是如何创建以及销毁的这些概念&#xff0c;所以就打算总结一些spring…

Spring MVC 学习总结

学习目标 了解 Spring MVC 是什么&#xff0c;为什么要使用它或者说它能解决什么问题&#xff0c;其与 Spring 是什么关系。理解为什么配置 Spring MVC 的前端控制器的映射路径为 “/” 会导致静态资源访问不了&#xff0c;掌握怎么处理这个问题。掌握基于注解方式使用 Spring…

分享一个vue-slot插槽使用场景

需求再现 <el-table-column align"center" label"状态" prop"mitStatus" show-overflow-tooltip />在这里&#xff0c;我想对于状态进行一个三目判断&#xff0c;如果为0那就是进行中&#xff0c;否则就是已完成&#xff0c;期初我是这样写…

九大常见数据结构

常用的数据结构可根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等&#xff0c;非线性结构包括树、图等。 1 数组 数组可以说是最基本最常见的数据结构。数组一般用来存储相同类型的数据&#xff0c;可通过数组名和下标进行数据的访问和更新。…

self instruct 技术

《SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions》 github: self-instruct 背景 大模型表现惊人&#xff0c;但是严重依赖于人工编写的指令数据。本文中提出self-instruct框架&#xff1a;一种基于大模型自动生成指令数据的方法。 主要步骤 1. …

[ DPU / SmartNIC/ 网卡 ]系统级的测试验证

开局一张图&#xff0c;其他慢慢来编 信雅纳DPU测试解决方案荣获第三届DPU峰会的“匠芯技术奖” 看完这张&#xff0c;小编再送一张&#xff1a;&#xff1a;&#xff1a; 网卡进化 更智能的加速卡SmartNIC/DPU 例如&#xff0c;将部分网络协议处理的功能卸载到 DPU 网卡&am…

Flutter(九)Flutter动画简介

1.动画简介 Animation、Curve、Controller、Tween这四个角色&#xff0c;它们一起配合来完成一个完整动画 Animation Animation是抽象类&#xff0c;和UI渲染没有关系&#xff0c;功能是保存动画的插值和状态&#xff1b;比较常用的是Animation addListener&#xff1a;帧监听…

EXCEL中点击单元格,所在行和列都改变颜色

1、打开VBA编辑环境。 2、选中需要添加程序的Sheet页面。 3、粘贴如下代码在编辑区域并保存后关闭。 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) On Error Resume Next Cells.FormatConditions.Delete // 如下代码是行变&#xff0c;在粘贴到VBA中时…

【项目经理】如何说话有条理

如何说话有条理 1. PREP法则2. SCRTV模型3. FFC赞美法则4. RIDE 说服法则 1. PREP法则 2. SCRTV模型 3. FFC赞美法则 4. RIDE 说服法则

WiFi标签工作状态描述

1. LED 灯闪烁代表意义 蓝灯慢闪&#xff08;每隔 500ms 亮一次&#xff09;&#xff1a;标签进入到配置模式 蓝灯快闪&#xff08;每隔 100ms 亮一次&#xff09;&#xff1a; WIFI-TOOL 工具连接上了标签 蓝灯超快闪烁&#xff08;每隔 50ms 闪烁一次&#xff09;&…

每天一分享#读up有感#$记忆宫殿$

记忆宫殿&#xff0c;分享一位喜欢的up&#xff0c;粗略记录下今日鉴赏小结。 【记忆宫殿背句子-哔哩哔哩】 https://b23.tv/vzSCsek 所得 人的记忆就像水波&#xff0c;你只要记住一个中心它会自动往外扩散。 解惑了我记忆时先找关键字加顺序背诵的原理&#xff0c;只是up厉…

关于 MySQL、PostgresSQL、Mariadb 数据库2038千年虫问题

MySQL 测试时间&#xff1a;2023-8 启动MySQL服务后&#xff0c;将系统时间调制2038年01月19日03时14分07秒之后的日期&#xff0c;发现MySQL服务自动停止。 根据最新的MySQL源码&#xff08;mysql-8.1.0&#xff09;分析&#xff0c;sql/sql_parse.cc中依然存在2038年千年虫…