1. 程式人生 > >【華為機試066】配置檔案恢復

【華為機試066】配置檔案恢復

題目描述:

命   令 執   行
reset reset what
reset board board fault
board add where to add
board delet no board at all
reboot backplane
impossible
backplane abort install first
he he unkown command

為了簡化輸入,方便使用者,以“最短唯一匹配原則”匹配:
1、若只輸入一字串,則只匹配一個關鍵字的命令列。例如輸入:r,根據該規則,匹配命令reset,執行結果為:reset what;輸入:res,根據該規則,匹配命令reset,執行結果為:reset what; 
2、若只輸入一字串,但本條命令有兩個關鍵字,則匹配失敗。例如輸入:reb,可以找到命令reboot backpalne,但是該命令有兩個關鍵詞,所有匹配失敗,執行結果為:unkown command 
3、若輸入兩字串,則先匹配第一關鍵字,如果有匹配但不唯一,繼續匹配第二關鍵字,如果仍不唯一,匹配失敗。例如輸入:r b,找到匹配命令reset board,執行結果為:board fault。

4、若輸入兩字串,則先匹配第一關鍵字,如果有匹配但不唯一,繼續匹配第二關鍵字,如果唯一,匹配成功。例如輸入:b a,無法確定是命令board add還是backplane abort,匹配失敗。
5、若輸入兩字串,第一關鍵字匹配成功,則匹配第二關鍵字,若無匹配,失敗。例如輸入:bo a,確定是命令board add,匹配成功。
6、若匹配失敗,列印“unkown command”

Java實現:

import java.util.HashMap;
import java.util.Scanner;
 
//用HashMap
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<String, String> hMap = new HashMap<>();
        hMap.put("reset", "reset what");
        hMap.put("reset board", "board fault");
        hMap.put("board add", "where to add");
        hMap.put("board delet", "no board at all");
        hMap.put("reboot backplane", "impossible");
        hMap.put("backplane abort", "install first");
        while (sc.hasNext()) {
            String strs = sc.nextLine();
            if(hMap.containsKey(strs)){
                System.out.println(hMap.get(strs));
            }else{
                System.out.println("unkown command");
            }
        }
        sc.close();
    }
}

知識點:

  • 這題出的什麼鬼。。。測試用例就是完全的命令,僥倖通過了