5.13华为OD机试真题 新系统 - 查找能被整除的最大整数 (JavaPyCC++JsGo) 📅 2026/7/24 1:29:17 查找能被整除的最大整数2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型点击查看华为 OD 机试真题完整目录2026最新华为OD机试新系统卷 双机位C卷 真题题库目录全覆盖题库 逐点算法考点详解题目描述给定一个字符串和一个正整数字符串由大小写字母和数字组成要求从字符串中找出最大能被给定正整数整除的数。2026 华为OD机试真题 5月13日华为OD上机新系统考试真题 100 分题型输入描述string inputStr // 第一个字符串int inputDivisor // 第二个正整数输出描述result // 返回结果值注:给定的 inputStr 字符串长度为 1~ 10000给定的 inputDivisor 值的范围为 1~ 99;从 inputStr 中解析的整数不可分割支持前缀为 0 整数串数值范围为 0~ 999例如:(1) 29ab03、29ab003、29ab0003、29ab00003、29ab000003等 3 前面有前缀 0 的数字串解析出整数为 29 和 3;(2) 0abc123、00abc123、000abc123、0000abc123、00000abc123 等含一个或多个 0 的数字串解析出整数为 0 和 123。如果输入都合法且能找到能被整除的最大数则输出该最大数; 其他情况输出 −1例如: (1) 输入数据包含非法字符、值超出范围、长度超出范围等; (2) 没有找到能被 inputDivisor 整除的数。补充说明程序运行内存要小于256MB;程序运行耗时不能超过 1 秒。示例1输入abc123EFEDG34aadD78er,2输出78说明34 和 78 都能被 2 整除78 为能被整除的最大数。示例2输入wrwqr1.0wede-,3输出-1说明参数 1 字符串中包含非法字符 .−示例3输入ewr23hk064ASW12VBG,4输出64说明获取的整数列表为 23、64、12能被 4 整除的最大数为 64示例4输入ewr23hk064ASW12VBG,5输出-1说明获取的整数列表为 23、64、12都不能被5整除示例5输入wrq45ret0eww237ere,7输出0说明只有 0 能被 7 整除示例6输入aaa2222bb66,2输出-1说明第一个参数中存在大于 999 的整数参数不合法。解题思路本题要求从一个包含字母和数字的字符串中提取出所有的整数支持前导零并找出其中能被给定正整数整除的最大整数。参数校验 - 字符串长度需在 1 到 10000 之间。 - 除数范围在 1 到 99 之间。 - 字符串只能由大小写字母和数字组成。如果出现其他字符如.、、-等视为非法输入直接输出 -1。整数提取规则 - 连续的数字字符构成一个整数。 - 提取出的整数数值范围为 0 到 999。 - 如果连续数字串的有效数值超过 999即忽略前导零后的位数超过 3 位或者数值大于 999则参数不合法输出 -1。 - 特殊情况处理全为 0 的数字串如0、00、000解析结果为数值 0。算法流程 - 遍历字符串使用一个指针或状态机识别连续的数字片段。 - 对于每一段数字片段过滤掉前导零。统计有效数字的长度并计算数值。校验数值是否超过 999。若校验通过判断该数值是否能被除数整除并维护全局最大值。最后输出最大值若未找到满足条件的数则输出 -1。复杂度分析时间复杂度$O(N)$其中 $N$ 是字符串的长度。我们只需要对字符串进行一次线性扫描。空间复杂度$O(1)$除了存储输入的字符串外只需要常数级别的额外空间来记录当前的数字和最