华为OD机试D卷C卷 - 密码输入检测(C++ Java JavaScript Python C语言)

本文介绍了华为OD机试中关于密码输入检测的题目,包括题目描述、输入输出要求以及解题思路。解题涉及C++、Java、JavaScript、Python和C语言的实现。通过示例和完整用例展示了解题过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:密码输入检测(本题分值100)

给定用户密码输入流input,输入流中字符’<'表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。

密码安全要求如下:

1.密码长度>=8;

2.密码至少需要包含1个大写字母;

3.密码至少需要包含1个小写字母;

4.密码至少需要包含1个数字;

5.密码至少需要包含1个字母和数字以外的非空白特殊字符

注意空串退格后仍然为空串,且用户输入的字符串不包含‘<’字符和空白字符。

输入描述

用一行字符串表示输入的用户数据,输入的字符串中‘<’字符标识退格,用户输入的字符串不包含空白字符,例如:ABC<c89%000<

输出描述

输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。两者间由‘,’分隔, 例如:ABc89%00,true

示例1

输入

ABC<c89%000<

输出

ABc89%00,true

说明

解释:多余的C和0由于退格被去除,最终用户输入的密码为ABc89%00,且满足密码安全要求,输出true

解题思路

  1. 始化了五个变量:result(一个空字符串用于存储处理后的输入),is_bigis_smallis_numis_spec(四个布尔变量,用于检查处理后的字符串是否包含大写字母、小写字母、数字和特殊字符)。

  2. 接下来,代码遍历输入的字符串中的每一个字符。对于每一个字符,代码首先检查它是否是’<'。如果是,那么代码将删除result字符串的最后一个字符(如果存在的话)。否则,代码将执行以下操作:

    • 将字符添加到result字符串中。
    • 如果字符是数字,并且is_num当前为False,那么将is_num设置为True。
    • 如果字符是小写字母,并且is_small当前为False,那么将is_small
### 关于2024年华为真题及相关解析 #### 题目背景与描述 根据已知的信息,2024年的华为OD涉及多道编程题目,并提供了多种语言的支持,包括但不限于C语言C++JavaPython以及JavaScript。这些题目不仅考察基础算法能力,还注重实际编码技巧和优化思维[^1]。 具体到“攀登者2”这道题目,其核心在于模拟登山过程中的路径规划或资源分配问题。该类问题通常可以通过动态规划(Dynamic Programming)、贪心算法(Greedy Algorithm)或者广度优先搜索(BFS)来解决。以下是针对此题目的进一步分析: #### 思路概述 对于此类问题,可以采用分步求解的方式进行处理。假设输入数据为一组山峰的高度列表`heights[]`,目标是最优地完成一次或多轮攀爬操作,在满足特定条件的前提下最大化收益或最小化代价。常见的约束可能包括能量消耗限制、时间窗口设定等[^2]。 一种典型的解决方案如下所示: - 定义状态转移方程用于记录当前状态下所能达到的最大值; - 初始化边界情况以便后续迭代计算能够顺利展开; - 循环遍历整个数组并依据既定规则更新各个位置的状态值直至得出最终结果。 #### 示例代码 (Python 实现为例) ```python def climb_peaks(heights, energy_limit): n = len(heights) dp = [-float('inf')] * n # 动态规划表初始化 # 初始状态设置 dp[0] = heights[0] for i in range(1, n): for j in range(i): if abs(heights[i]-heights[j]) <= energy_limit and \ dp[j]+heights[i]>dp[i]: dp[i]=dp[j]+heights[i] return max(dp) if any(x >=0 for x in dp )else -1 if __name__ == "__main__": test_heights=[3,8,-4,9,5] limit=6 result=climb_peaks(test_heights ,limit ) print(result) ``` 上述程序片段展示了如何利用二维DP方法解决问题的一个简化版本。其中考虑到了两个维度上的变化因素——高度差与剩余精力阈值之间的关系,并通过双重循环实现了全局最优解的寻找过程。 #### 注意事项 需要注意的是,尽管这里给出了基于Python的具体实现方案,但在实际考环境中可能会遇到更多复杂情形下的变体形式。因此建议考生熟悉各类经典模型及其变形应用的同时也要加强动手实践的能力训练。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

算法大师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值