华为OD机考真题(2025B卷)及详细答案.docxVIP

  • 7
  • 0
  • 约5.43千字
  • 约 7页
  • 2026-04-28 发布于河北
  • 举报

华为OD机考真题(2025B卷)及详细答案.docx

华为OD机考真题(2025B卷)及详细答案

第一题(100分,基础题·字符串处理)

题目描述

给定一个字符串,要求将字符串中连续相同的字符进行压缩,压缩规则为:字符+连续出现次数,若次数为1,则省略次数(例:输入aabccc,输出a2bc3);若压缩后的字符串长度不小于原字符串长度,则返回原字符串。

输入:一个非空字符串(长度1≤n≤1000)

输出:压缩后的字符串或原字符串

示例1:输入aabccc→输出a2bc3

示例2:输入abc→输出abc(压缩后abc与原长度一致,返回原串)

示例3:输入aaaaa→输出a5

详细答案

1.解题思路

核心:遍历字符串,统计连续相同字符的出现次数,遍历过程中拼接压缩结果,最后对比压缩后与原串长度,选择更短的返回。

步骤:1.处理空串(本题输入非空,可省略,但机考需考虑边界);2.初始化前驱字符、计数变量、结果列表;3.遍历字符串,对比当前字符与前驱字符,相同则计数+1,不同则拼接前驱字符和计数(计数1省略),重置前驱字符和计数;4.遍历结束后,拼接最后一组字符和计数;5.对比长度,返回最优结果。

2.可运行代码

python

defcompress_string(s):

#处理边界(输入非空,此处冗余但机考建议保留,避免测试用例异常)

ifnots:

return

文档评论(0)

1亿VIP精品文档

相关文档