华为OD机试真题 新系统 2026-09-02 Java&Go&C【查找幸运数】

SpringBoot支持动态更新配置文件参数 本文介绍SpringBoot在不重启服务的前提下动态刷新配置参数的实现方案。文章通过自定义DynamicPropertyUpdater与ConfigFileReloader组件,结合Environment属性源操作,实现单个配置项更新、批量更新以及重新加载整个配置文件,并给出接口测试步骤与效果验证。 阅读详情

目录

题目

思路

Code

题目

题目内容:

在仅由数字组成的字符串中,找出只由 6 或 8 组成的最长连续子串。

输入描述:

输入数字字符串,长度小于 256。

输出描述:

输出所有最长子串,去重后按字典序排序;字符串为空或没有符合子串时输出 [""]。

样例 1

输入:

1688

输出:

["688"]

样例 2

输入:

123

输出:

[""]

样例 3

输入:

88612668

输出:

["668","886"]

思路

整体思路:扫描所有仅含 6/8 的极大连续段,维护最长长度与并列候选集合。

第一步:遇到 6/8 后扩展到连续段末尾。

第二步:更长段出现时清空旧候选,同长度则加入集合去重。

第三步:按字典序输出候选。

边界处理:空输入或无幸运段输出 [""];重复最长段只保留一次。

复杂度分析:扫描 O(N),排序 O(K log K),空间 O(K)。

思路配图

Code

import java.io.*;
import java.util.*;

public class Main {
  public static void main(String[] args) throws Exception {
    String s =
        Optional
            .ofNullable(
                new BufferedReader(new InputStreamReader(System.in)).readLine())
            .orElse("")
            .trim();
    // TreeSet 同时完成最长候选去重和字典序排序。
    // 输入字符串 s 从左到右扫描;maxLength 记录目前最长段长度,best 只保存达到该长度的不同字符串。
    TreeSet<String> best = new TreeSet<>();
    int maxLength = 0, index = 0;
    while (index < s.length()) {
      if (s.charAt(index) != '6' && s.charAt(index) != '8') {
        index++;
        continue;
      }
      // [start,index) 是当前只含 6/8 的极大连续段。
      // 极大段表示它左右两侧已经是非 6/8 字符或字符串边界,所以无需再从段内重复寻找更短子串。
      int start = index;
      while (index < s.length() &&
             (s.charAt(index) == '6' || s.charAt(index) == '8'))
        index++;
      String segment = s.substring(start, index);
      if (segment.length() > maxLength) {
        // 新最长值出现时清空所有旧候选。
        // 发现更长段时,旧候选已经不可能成为答案,需要先清空;同长度段则加入集合自动去重。
        maxLength = segment.length();
        best.clear();
        best.add(segment);
      } else if (segment.length() == maxLength)
        best.add(segment);
    }
    // 如果扫描结束仍没有候选,题目要求返回一个空字符串元素,而不是返回空数组。
    if (best.isEmpty())
      best.add("");
    // 集合内容先按字符顺序排列,再给每个字符串保留双引号,得到题目规定的数组格式。
    StringJoiner output = new StringJoiner(",", "[", "]");
    for (String item : best)
      output.add("\"" + item + "\"");
    System.out.println(output);
  }
}

Go

package main

import (
    "bufio"
    "fmt"
    "os"
    "sort"
    "strings"
)
func main() {
    line, _ := bufio.NewReader(os.Stdin).ReadString('\n')
    s := strings.TrimSpace(line)
    // best 用映射去重并列最长段,maxLength 是当前资格线。
    // 输入字符串 s 从左到右扫描;maxLength 记录目前最长段长度,best 只保存达到该长度的不同字符串。
    best := make(map[string]bool)
    maxLength, index := 0, 0
    for index < len(s) {
        if s[index] != '6' && s[index] != '8' { index++; continue }
        // [start,index) 是无法继续延长的极大幸运段。
        // 极大段表示它左右两侧已经是非 6/8 字符或字符串边界,所以无需再从段内重复寻找更短子串。
        start := index
        for index < len(s) && (s[index] == '6' || s[index] == '8') { index++ }
        segment := s[start:index]
        if len(segment) > maxLength {
            // 新最长段出现时重建集合,旧候选全部失效。
            // 发现更长段时,旧候选已经不可能成为答案,需要先清空;同长度段则加入集合自动去重。
            maxLength, best = len(segment), map[string]bool{segment: true}
        } else if len(segment) == maxLength { best[segment] = true }
    }
    // 如果扫描结束仍没有候选,题目要求返回一个空字符串元素,而不是返回空数组。
    if len(best) == 0 { best[""] = true }
    answer := make([]string, 0, len(best))
    for item := range best { answer = append(answer, item) }
    sort.Strings(answer)
    // 为每项加引号,再拼接成无空格数组。
    // 集合内容先按字符顺序排列,再给每个字符串保留双引号,得到题目规定的数组格式。
    for i := range answer { answer[i] = `"` + answer[i] + `"` }
    fmt.Printf("[%s]\n", strings.Join(answer, ","))
}

C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare_string(const void *a, const void *b) {
  return strcmp(*(const char *const *)a, *(const char *const *)b);
}
int main(void) {
  char s[257] = "";
  if (fgets(s, sizeof(s), stdin))
    s[strcspn(s, "\r\n")] = '\0';
  // best 保存去重后的并列最长段,数量不会超过字符串长度。
  // 输入字符串 s 从左到右扫描;max_length 记录目前最长段长度,best 只保存达到该长度的不同字符串。
  char *best[256];
  int count = 0, max_length = 0, index = 0, length = (int)strlen(s);
  while (index < length) {
    if (s[index] != '6' && s[index] != '8') {
      index++;
      continue;
    }
    // 扩展到第一个非 6/8 字符,得到当前极大连续段。
    // 极大段表示它左右两侧已经是非 6/8 字符或字符串边界,所以无需再从段内重复寻找更短子串。
    int start = index;
    while (index < length && (s[index] == '6' || s[index] == '8'))
      index++;
    int segment_length = index - start;
    if (segment_length > max_length) {
      // 更长段出现时释放所有旧候选。
      // 发现更长段时,旧候选已经不可能成为答案,需要先清空;同长度段则加入集合自动去重。
      for (int i = 0; i < count; i++)
        free(best[i]);
      count = 0;
      max_length = segment_length;
    }
    if (segment_length == max_length) {
      char *segment = malloc((size_t)segment_length + 1);
      memcpy(segment, s + start, (size_t)segment_length);
      segment[segment_length] = '\0';
      int duplicate = 0;
      for (int i = 0; i < count; i++)
        if (!strcmp(best[i], segment))
          duplicate = 1;
      if (duplicate)
        free(segment);
      else
        best[count++] = segment;
    }
  }
  qsort(best, (size_t)count, sizeof(char *), compare_string);
  // 空串或无幸运段时按题意输出 [""]。
  // 如果扫描结束仍没有候选,题目要求返回一个空字符串元素,而不是返回空数组。
  if (!count) {
    printf("[\"\"]\n");
    return 0;
  }
  // 集合内容先按字符顺序排列,再给每个字符串保留双引号,得到题目规定的数组格式。
  printf("[");
  for (int i = 0; i < count; i++) {
    printf(i ? ",\"%s\"" : "\"%s\"", best[i]);
    free(best[i]);
  }
  printf("]\n");
  return 0;
}

【华为od机试真题Python+JS+Java+Go合集】【超值优惠】:Py/JS/Java/Go合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java&Go】:Java&Go真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群】【文章底部有二维码链接,可扫码加交流群】

华为OD机试面试交流群二维码

华为OD机试:二本院校有机会吗? 有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。

TCN(Temporal Convolutional Networks)时序卷积网络详解及代码 阅读详情

相关推荐

XVF3800麦克风阵列实战:从选型到快速原型搭建

本文详细介绍了XVF3800麦克风阵列的选型与快速原型搭建实战经验。从开箱即用的特性到波束成形、回声消除等核心功能拆解,再到硬件设计避坑指南和固件开发技巧,帮助开发者高效实现智能语音设备的开发。特别适合智能音箱、会议终端等需要远场拾音和声源定位的应用场景。

weixin_29161719的博客 268

华为od笔试题目

牛客“分田地” / 洛谷P3017 Brownie Slicing (二维切巧克力,最大最小)力扣239滑动窗口最大值 (单调队列模板)+ 前缀和 的组合。

新人 27

稳压二极管选型指南:关键参数与电路稳定性优化

本文深入解析了稳压二极管在电路设计中的核心作用与选型要点。文章详细阐述了稳定电压、动态电阻、额定功耗等关键参数对电路稳定性的影响,并结合实战案例,提供了从需求分析到参数验证的系统化选型流程与优化策略,帮助工程师避免常见设计陷阱,实现电路稳定性优化。

weixin_29196891的博客 670

静态脱敏系统技术趋势分析

静态脱敏系统技术趋势分析要回答的不是买了哪些新功能,而是哪些能力正在变成出厂默认。本文从确定性脱敏、规则版本化、可逆受控与导出验签四条线,拆解趋势判断的可复算落点,并给出采购方可以直接核对的清单。

xingxiuer的博客 267

实战STM32G0驱动DRV8870/AT8870:PWM+DMA精准调速与H桥衰减模式详解

本文详细介绍了如何使用STM32G0单片机结合DRV8870/AT8870电机驱动芯片实现直流有刷电机的精准控制。重点讲解了PWM与DMA结合实现高效调速的硬件配置与软件驱动方法,并深入剖析了H桥快衰减与慢衰减模式的工作原理及应用场景,为嵌入式电机控制项目提供了完整的实战解决方案。

c7d8e9的博客 591

国产FPGA开发实战:紫光同创编程软件中的约束文件详解与常见问题

本文详细解析了紫光同创FPGA编程软件中约束文件的关键配置技巧与常见问题。通过基础架构解析、时钟约束实践、物理约束调控及典型问题排查指南,帮助开发者高效掌握国产FPGA开发中的约束文件应用,提升开发效率与设计稳定性。

gin88的博客 892

Maven 下载与配置教程(新手友好版)

本文档手把手教你在 Windows 系统上安装和配置 Maven,全程从官方渠道下载,安全可靠。

qq_36085846的博客 248

Ubuntu中snap简单介绍

通过Snap可以安装众多的软件包。需要注意的是,snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间 介绍一些常用命令,有点类似docker 1、查看已经通过snap安装的snap包 snap list可以查看 2、可以搜索想要的snap包,例如tomcat snap search tomcat

icanflying的博客 4万+

构造函数表达式的值类别是:prvalue

C++ 中构造表达式 T() 的结果为 prvalue,因其本质是“对象的初始化配方”而非已有对象。这一设计使编译器能强制执行复制消除(C++17起),直接在目标位置构造对象,实现零开销优化。即使类型不可拷贝或不可移动,也能合法初始化。同时,prvalue绑定引用时物化为xvalue,延长生命周期。该机制清晰区分初始化、移动与持久对象,是返回值优化和高效资源管理的语言基础。

jimy1的博客 481

HBM PHY 架构解析:从主控模块到DWORD设计的深度探索

本文深入解析了HBM PHY的完整架构,从作为系统大脑的PUB主控模块出发,详细阐述了其CSR控制、初始化与训练引擎的核心功能。进而剖析了负责命令传输的AWORDX2模块与作为数据高速公路的DWORD模块的设计奥秘,包括其双向数据流、精密时钟对齐与延迟线校准机制。最后,探讨了顶层MASTER PHY的整合作用及从DFI到DRAM的完整数据通路,为理解这一高性能内存接口的关键物理层设计提供了全面视角。

weixin_29306011的博客 267

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 171

LeetCode100 1.两数之和

暴力枚举法时间复杂度为O(n²),空间O(1),直观但效率低。优雅解法利用HashMap,遍历中先查补数、后存当前值,平均时间复杂度O(n),空间O(n)。虽最坏情况(哈希冲突严重)理论可达O(n²),但Java 8+中链表超过8个元素转为红黑树,最坏退化至O(n log n),实际性能优异。

Shaoxingzong的博客 300

C#【必备技能篇】Winform实现多语言切换(.resx文件的应用)

在实际的项目开发中,软件需要实现多语言切换。本文通过一个实际的例子,可以让你学习到这个技能。

星Yeah 的博客 1万+

生产环境 Tomcat 200 线程跑满并报连接池超时:一次虚拟线程阻塞点排查

开启虚拟线程后线程告警消失,HikariCP 连接池超时却更早出现。先用 JFR 事件排除 `synchronized` 阻塞,再按并发预算重算连接池容量。

昨日种种,皆成今我。今日种种,皆成新我。 324

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

移动端 CPU 调度分析:线程亲和性、大小核迁移与卡顿

移动端卡顿常非代码瓶颈,而是调度问题。线程迁移、缓存失效、优先级反转、队列竞争等会显著增加等待时间,使相同工作耗时上升。需通过调度时间线区分运行与等待成本,分析核心类别、频率变化、锁状态及线程池负载。验证应控制变量,避免误判。修复关键在优化同步、控线程数、调优先级,而非盲目绑核。

m0_59437018的博客 247

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

DDD(领域驱动设计)篇四:退费 + 支付,三层 vs DDD 各撸一遍

DDD 不是一门新技术,而是一种纪律——业务规则集中放、用业务的语言放、放在划清的边界内。三层架构没有错,它只是没有回答"规则放哪"这个问题;DDD 回答了,代价是多写几个类、多学几个概念。 代码会写了,再读书就不抽象了。推荐顺序: 《实现领域驱动设计》(Vaughn Vernon,"红书")——比原著(蓝书)好读得多,先读前半部分; 蓝书挑着读:只读"统一语言""限界上下文"两章。

Good good study,day day up 71

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则

德法比推行企业间结构化电子发票(EN 16931)。本文讲金额怎么算才能过校验、怎么用 Python + saxonche 不装 Java 跑 XRechnung/Peppol 官方 Schematron,以及 Leitweg-ID 校验位这类官方规则查不到的坑,并介绍开源工具 eu-einvoice。

weixin_38859100的博客 237

Spring Boot的配置文件

本文介绍了Spring Boot中配置文件的使用,重点对比了application.properties与application.yml两种格式。properties为键值对形式,注释易乱码;yml语法更简洁,支持层级结构,优先级高于properties。通过@Value、@ConfigurationProperties可读取配置项,后者支持对象绑定。配置文件需统一格式,避免冲突。同时介绍了配置项读取流程及注解使用注意事项。

captain376的博客 240

若依项目新建业务模块

本文介绍了在若依框架中新建业务子模块的完整步骤:通过Maven创建子模块,引入ruoyi-framework依赖;在父工程中锁定子模块版本;在ruoyi-admin中添加依赖并刷新Maven;最后重启项目即可成功加载新模块。图文结合,清晰展示操作流程,确保模块集成顺利。

weixin_50379372的博客 158

基于 Spring Cloud Alibaba 的微服务架构设计与落地实践

本文介绍基于Spring Cloud Alibaba的微服务架构方案,整合Nacos、Sentinel、Seata、RocketMQ等组件,实现服务注册发现、配置管理、流量防护、分布式事务与消息驱动。通过统一版本管理、四层分层架构与按业务拆分的服务设计,结合Feign实现服务调用,配合动态配置刷新与降级容错,构建高可用、可扩展的微服务系统。

薛之谦 202

LeetCode Hot 100 · 双指针 3 题 Java

LeetCode Hot 100 · 双指针 3 题,覆盖 11 盛最多水的容器、15 三数之和、42 接雨水,主线是排序 / 双指针 / 前缀最值与「短板效应」。

2401_88612756的博客 355

《On Java 中文版 基础卷》阅读笔记 实现隐藏 11

《On Java 中文版 基础卷》阅读笔记 实现隐藏 11

道友 166

第 3 篇:Ubuntu 配置 JDK 17 环境

本文介绍在 Ubuntu 24.04 上通过 APT 安装并配置 OpenJDK 17 的完整流程。包括查看可用版本、安装 JDK 17、验证安装、设置 JAVA_HOME 环境变量(推荐使用 /etc/profile.d/java.sh 方式)、多版本切换及测试程序验证。步骤简洁稳定,适用于开发与部署 Spring Boot 等 Java 应用场景。

John_DHui的博客 231

Spring Boot + Maven 接入 Allatori:从普通打包到可选混淆发布

本文介绍如何在 Spring Boot 工程中通过 Maven 集成 Allatori,实现按需启用的混淆打包,并同时保留普通包和混淆包。文章提供完整的 POM 与混淆配置,解释构建顺序、名称保留规则,以及 Spring、MyBatis、JSON 序列化和反射场景下的兼容性处理。同时结合实际接入过程,记录变量替换、重复打包等常见问题,说明如何验证混淆产物、归档映射日志和接入 CI,方便首次配置或后续迁移时照着操作。

jianxuan的专栏 350

SpringBoot信创项目怎么验收?从数据库迁移到交付证据

从真实信创实验记录出发,拆解版本基线、SQL审计、运行时适配与业务闭环,给出能够落实到交付文档的验收方法。

ruoyioffice的博客 380

【Linux】linux线程同步(条件变量的详解与实现)

本文系统讲解了POSIX条件变量的使用,涵盖初始化、等待、唤醒、超时及销毁等核心函数。强调条件变量需与互斥锁配合,通过while循环重新检查共享状态,避免虚假唤醒和竞态。重点指出:线程等待的是条件而非通知,通知不会被保留,修改共享状态必须持锁。结合生产者-消费者模型示例,阐明正确使用方式,并总结常见错误,如误用if、依赖唤醒顺序等。核心原则为“等待条件,而非通知”,确保多线程同步安全可靠。

2401_85487070的博客 195
上一篇: 华为OD机试真题 新系统 2026-08-30 Java&Go&C【小花获胜的奶茶】
下一篇: 华为OD机试真题 新系统 2026-09-02 Python&JS【螳螂领地争霸】
MISAYAONE
博客等级 码龄11年 2万+粉丝 4119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值