华为OD机试 九宫格按键输入法
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                华为OD机试 九宫格按键输入法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                九宮格按鍵輸入,輸出顯示內容,有英文和數字兩個模式,默認是數字模式,數字模式直接輸出數字,
英文模式連續按同一個按鍵會依次出現這個按鍵上的字母,如果輸入 ‘/’ 或者其他字符,則循環中斷。
字符對應關系如圖所示。
 
要求輸入一串按鍵,輸出屏幕顯示內容。
輸入描述
輸入范圍為數字 0~9 和字符 ‘#’、’/’,輸出屏幕顯示,例如:
在數字模式下,輸入 1234,顯示 1234
在英文模式下,輸入 1234,顯示,adg
輸出描述
#用于切換模式,默認是數字模式,執行 # 后切換為英文模式;
/ 表示延遲,例如在英文模式下,輸入 22/222,顯示為 bc;
英文模式下,多次按同一鍵,例如輸入 22222,顯示為 b;
示例 1
輸入
123輸出
123
示例 2
輸入
#22/23044444411輸出
bad i.
JAVA參考代碼:
import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class JiuGongGe {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();scanner.close();String result = getDisplayResult(input);System.out.println(result);}private static String getDisplayResult(String input) {Map<Character, String> characterStringMap = buildMap();boolean isNumber = true;StringBuffer stringBuffer = new StringBuffer();int inputLength = input.length();for (int i = 0; i < inputLength; i++) {char ch = input.charAt(i);// # 切換輸入法if (ch == '#') {isNumber = !isNumber;continue;}// '/' 不拼接if (ch == '/') {continue;}// 數字直接拼接if (isNumber) {stringBuffer.append(ch);continue;}// 英文輸入法拼接 空格if (ch == '0') {stringBuffer.append(" ");continue;}// 英文輸入法時:統計重復字符數量int repeatCharNum = getRepeatCharNum(input, inputLength, ch, i);// 向右移動指針,將重復的字符剔除(連續重復字符最終只輸入一個字符)i = i + repeatCharNum;// 1 對應 ",.", 2 對應 "abc" 等String ziMu = characterStringMap.get(ch);if (repeatCharNum > 0) {int i1 = repeatCharNum % ziMu.length();stringBuffer.append(ziMu.charAt(i1));} else {// 沒有重復字母直接輸出stringBuffer.append(ziMu.charAt(repeatCharNum));}}return stringBuffer.toString();}private static int getRepeatCharNum(String input, int inputLength, char ch, int i) {int repeatCharNum = 0;for (int j = i + 1; j < inputLength; j++) {char next = input.charAt(j);// '/'表示中斷連續if (next == '/') {break;}// 當前字符不等于下一個字符if (ch != next) {break;}repeatCharNum++;}return repeatCharNum;}private static Map<Character, String> buildMap() {Map<Character, String> map = new HashMap<>();map.put('1', ",.");map.put('2', "abc");map.put('3', "def");map.put('4', "ghi");map.put('5', "jkl");map.put('6', "mno");map.put('7', "pqrs");map.put('8', "tuv");map.put('9', "wxyz");return map;} }總結
以上是生活随笔為你收集整理的华为OD机试 九宫格按键输入法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 迈德威视工业相机python二次开发,修
- 下一篇: CorelDraw2022新版来了 新版
