华为OD机试真题 新系统 - 失灵的键盘 (Java/Py/C/C++/Js/Go)

失灵的键盘

2026 华为OD机试真题 4月15日华为OD上机新系统考试真题 100 分题型

点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解

题目描述

有一个键盘有 2个按键失灵了,按下这些键时会连续输出其他键对应的字符两次。具体如下:

  • 按下 j 键一次,屏幕上显示 u(两个连续的 u );按下 b键一次,屏幕上显示 t(两个连续的 t)
  • u键和 t键是好的,按下 u键一次时,屏幕只会显示一次 u(正常按键);按下 t键一次时,屏幕只会显示一次 t (正常按键)
  • 假定屏幕上连续显示两个 t 一定是按了一次 b 键,而不是两次 t键;假定按键 t之后不会紧接着按键 b,即 tttt转义为两个 b,而不可能是 tbt;u和 j同样适用该规则
  • 其它按键也都正常工作

为了方便维修,给定一串屏幕上输出的字符串,维修师傅要求按照按键次数降序输出,次数相同的按键按照对应字符的升序排序(失灵按键以原对应字符来排序),只统计按键次数大于 0的按键。

同时维修师傅要求输出时需要进行一次转义(字符映射),规则如下:

  • 按键 0 ~ 9,直接以数字 0 ~ 9 进行输出
  • 按键 a~ z,以 10~ 35 进行输出

输入描述

一个字符串s,只包含小写字母和数字,ss 的长度不超过 500(s 中不包含 b和 j字母)

补充

按键范围只包括:数字 0 ~ 9和小写字母 a ~ z 且不包含b和j。

输出描述

按键转义后的值,按键次数构成结果对,所有按键的结果对按照按键次数降序排列。

示例1

输入

t

输出

29:1


说明

单个字符→按了 t 键,t 键转义为 29

示例2

输入

uuuua

输出

19:2 10:1

说明

uuuu匹配为两个jj,a一个

解题思路

核心思想

题目描述中指出:失灵的 j 键会输出连续的 uu,失灵的 b 键会输出连续的 tt。而且因为 ujtb 的转义规则,输入字符串中每出现一次连续的 uu 就意味着按了一次 j,每出现一次连续的 tt 就意味着按了一次 b
因此,我们可以直接将字符串中所有的 "uu" 替换为 "j",将所有的 "tt" 替换为 "b"。替换后的字符串就完美反映了按键的实际过程。

随后,我们需要统计各个字符出现的频率,并进行排序和转义输出。
排序规则如下:

  1. 首先按照按键次数降序排
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

算法大师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值