题目
九宫格按键输入,判断输出,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/”或者其他字符,则循环中断。
要求输入一串按键,输出屏幕显示。
输入描述:
输入范围为数字 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语言 实现【九宫格按键输入法】