最新华为OD机试真题——(E卷,200分) - 解压报文压缩报文还原(python)

题目描述

为了提升数据传输的效率,会对传输的报文进行压缩处理。你需要解压缩输入的报文,返回原始的报文内容。

压缩规则

  • 表示形式为 n[str],其中 n 是一个正整数,表示方括号内部的 str 重复 n 次。

输入描述

输入为一个压缩后的报文,其特点如下:

  1. 不考虑无效的输入,所有方括号总是符合格式要求。
  2. 原始报文不会包含数字,只有重复次数以数字形式出现,故例如不会有 5b3[8] 的情况。

输出描述

你需要输出解压后的原始报文,确保文本长度不超过1000,并假设输入不会出现异常情况。

示例

示例 1

输入

3[k]2[mn]

输出

kkkmnmn

说明

  • k 被重复3次,mn 被重复2次,因此最终结果是kkkmnmn
示例 2

输入

3[m2[c]]

输出

mccmccmcc

说明

  • m2[c] 解压后为 mcc,重复3次最终结果为mccmccmcc

python源码

# 获取压缩后的字符串输入
compressed_data = input()  # 从输入读取压缩字符串
stack = [['', 1, '']]  # 初始化栈,存储解压后的字符串和重复次数
current_segment = ''  # 当前处理的字符段
current_multiplier = ''  # 当前重复次数 

# 遍历每一个字符
for char in compressed_data:
    if char.isalpha():  # 如果字符为字母
        current_segment += char  # 追加到当前字符段
    elif char.isdigit():  # 如果字符为数字
        current_multiplier += char  # 追加到当前重复次数
    elif char == '[':  # 如果字符为左括号
        # 弹出当前字符串和其重复次数入栈
        stack.append([current_segment, int(current_multiplier), ''])  
        current_segment = current_multiplier = ''  # 重置当前字符串段和当前重复次数
    else:  # 如果字符为右括号
        previous_segment, repeat_count, previous_result = stack.pop()  # 从栈中弹出某个元素
        # 更新栈顶元素的结果,累加之前的字符串和对当前字符串的重复拼接
        stack[-1][-1] += previous_segment + repeat_count * (previous_result + current_segment)  
        current_segment = ''  # 重置当前字符串段

# 返回最终的结果
result_string = stack.pop()[-1] + current_segment  # 弹出栈顶并加上最后的字符段 
print(result_string)  # 输出解压后的结果

关于华为OD

最新华为OD机试真题——(E卷,200分) - 解压报文压缩报文还原(python)_第1张图片

华为OD机考笔试的难度逐年提升,对于算法基础薄弱或工作后较少接触算法的候选人来说,通过率较低,因此全面刷题库是提高通过率的关键。以下是对华为OD职位的一些关键信息整理:

华为OD职位特点:

  1. 校准与可靠性:经过专业校准,确保高可靠性和长期稳定性。
  2. 集成与功耗:传感器通过单线串行接口集成,体积小,功耗低。
  3. 适用场景:适用于多种应用场景,具有4针单排引脚封装,方便连接。
  4. 工作内容:与正式员工一起在华为研究所办公,工作内容基本相同。
  5. 工作时间:弹性工作制,一般一二四需补工时至晚上20:30,三五正常下班,周末双休,月末周六加班双倍工资。
  6. 学历与经验:要求本科及以上学历,理工类专业优先,有编程语言基础和基础算法知识。
  7. 转正要求:工作满一年,通过专业级可信认证,绩效至少拿过一次A,部门有转正指标。

候选人常见关注问题:

  • 外包职位:外包职位并非没有技术学习机会,关键在于个人能力和项目经验。
  • OD转华为正编:需要连续两次绩效A,但并非绝对要求,关键在于个人能力和部门指标。
  • OD稳定性:华为业务基本稳定,外包职位相比互联网和传统外包公司稳定性更高。
  • OD试用期转正:一般要求通过入门级或工作级可信认证,通过率较高。
  • OD转华为正编要求:工作满一年,通过专业级可信认证,绩效至少拿过一次A,部门有转正指标。

职位适合的候选人:

  • 编程水平、项目经验薄弱,希望快速获得核心项目经验的毕业生。
  • 工作经验丰富,希望突破现有薪资待遇和职业发展的专业人士。
  • 有相关基础或经验,希望获得职业转型机会的候选人。
  • 想加入华为但个人能力未达社招正编要求的候选人。

以下是针对华为OD机试E卷的高效备考指南,结合你的需求整理成结构化方案:


一、E卷题型构成分析

  • 题目来源:1道E卷新题 + 2道D/A/B/C卷旧题(新旧比例约1:2)
  • 分数分布:2道100分题(一星难度) + 1道200分题(二星难度)
  • 通过标准:总分150分(非目标院校建议260+安全分,300+对定级/薪资有利)

二、高效刷题策略

1. 优先级排序
  • Step1:优先刷E卷新题(题库持续更新中,关注最新动态)
  • Step2:重点突破D/A/B/C卷高频旧题(占2/3题目,原题概率高)
  • Step3:按算法分类专项练习(参考下文分类题单)
2. 分类刷题法(附高频题型)
算法分类 经典题型举例 刷题建议
字符串处理 字符串反转、KMP算法、正则匹配 熟悉API,避免超时
动态规划 背包问题、最长递增子序列、编辑距离 掌握状态转移方程
DFS/BFS 岛屿问题、迷宫路径、拓扑排序 模板题反复练习
贪心算法 区间调度、分糖果、跳跃游戏 验证最优性条件
二叉树 遍历、最近公共祖先、序列化 递归/迭代双解法
并查集 朋友圈问题、连通分量 路径压缩优化
滑动窗口 最长无重复子串、最小覆盖子串 边界条件敏感
3. 刷题技巧
  • 限时训练:100分题40分钟/题,200分题60分钟/题(模拟考试压力)
  • 闭卷编码:先独立完成再看解析,避免“虚假掌握”
  • 查重规避:修改变量名、调整逻辑顺序、添加注释(直接复制易被查重)

三、考试实战技巧

  1. 环境准备

    • 使用Chrome浏览器,关闭无关网页(防弹窗违规)
    • IDE本地编码后粘贴(避免在线编辑器卡顿)
  2. 答题策略

    • 先做100分题保底,再攻200分题(时间分配建议:40min+40min+60min)
    • 自测用例覆盖边界值(如空输入、超大数组等)
  3. 异常处理

    • 断网/死机可重新登录恢复进度
    • 中途离开需申请(否则可能判作弊)

四、资源推荐

  • 题库更新:关注官方动态及社区新题共享
  • 工具辅助
    • ChatGPT解析算法思路(但需自行编码实现)
    • LeetCode按标签筛选相似题(如华为常考的BFS/DP题型)

五、注意事项

  • 冷冻期:未通过需等待6个月才能再考
  • 语言选择:Java/Python更易上手(但需熟记基础API)
  • 代码规范:注释清晰,避免ctrl+s误操作

你可能感兴趣的:(华为od,python,算法)