AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

N0007. 0415-失灵的键盘

中等通过率 63% · 提交 32 · 通过 20
哈希表排序字符串模拟

小慕正在调试一个故障键盘,其中有2个按键失灵。当按下这些按键时,屏幕上会连续输出其他字符两次。具体情况如下: - 按下j键一次,屏幕上显示uu(两个连续的u);按下b键一次,屏幕上显示tt(两个连续的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,只包含小写字母和数字,s的长度不超过500(s中不包含b和j字母)。

输出描述

{按键转义后的值,按键次数}构成结果对,所有按键的结果对按照按键次数降序排列(输出实际是二维数组,第二维固定长度2)。

示例

示例 1

输入

t

输出

[[29, 1]]

说明:单个 t 是按了 t 键,转义值 t=29

示例 2

输入

uuuua

输出

[[19, 2], [10, 1]]

说明:处理过程: - uu(第1-2位)→ 匹配"uu"模式 → 按了 j 键(不是u键!) - uu(第3-4位)→ 匹配"uu"模式 → 按了 j 键(不是u键!) - a(第5位)→ 单个字符 → 按了 a 键 j键转义为19,a键转义为10 注意:题目约束了,u键之后不会紧跟着j键,因此不可能是u->j->u

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
失灵的键盘 - 解码示例 输入字符串: u u u u a 步骤1: 前两个 u 匹配"uu" → 按了 j 键 步骤2: 后两个 u 匹配"uu" → 按了 j 键 步骤3: 最后一个 a 单个字符 → 按了 a 键 统计结果 j 键: 2次 → 转义值 19 a 键: 1次 → 转义值 10 输出: [[19, 2], [10, 1]]
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「0415-失灵的键盘」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。