华为OD机试-- 九宫格按键输入法

137 阅读2分钟

题目

 九宫格按键输入,判断输出,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/”或者其他字符,则循环中断。

要求输入一串按键,输出屏幕显示。

read-normal-img

输入描述:

输入范围为数字 0~9 和字符’#’、’/’,输出屏幕显示,例如,

在数字模式下,输入 1234,显示 1234

在英文模式下,输入 1234,显示,adg

输出描述:

#用于切换模式,默认是数字模式,执行#后切换为英文模式;

/表示延迟,例如在英文模式下,输入 22/222,显示为 bc;

英文模式下,多次按同一键,例如输入 22222,显示为 b;

示例 1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

123#222235/56

输出

123adjjm

思路

1:说实话写一下九宫格的枚举都还挺费事的。。。

2:题目核心的难度其实在于各种情况的枚举:

  • 数字模式,直接输出。
  • 英文模式,那么当当前输入和之前输入的字符不同时需要输出,因此需要记忆上一次输入了什么以及输入了多少次。当当前输入和之前输入不同时,需要输出之前的字符:当前字符如果是最后一个字符,则输出。

3:'/'的意义

  • 数字模式可以忽略
  • 英文模式下,需要记录一下之前的字符是什么,以及这个字符出现的次数(用来判定到底选取哪个字符)

Java 实现:华为od统一考试B卷【九宫格按键输入法】Java 实现

Python实现:华为od统一考试B卷【九宫格按键输入法】Python 实现

C++ 实现:华为od统一考试B卷【九宫格按键输入法】C++ 实现

JavaScript实现:2023华为od统一考试B卷【九宫格按键输入法】JavaScript 实现

C实现:2022华为机试真题 C语言 实现【九宫格按键输入法】

0120c3554947480000019ae9566ad9.jpg@2o.jpg