解题思路:

  • 这个恢复命令的题目吧, 感觉比较固化一些;
  • 区分命令的长度 然后通过字符串的startWith方法进行匹配。
  • 这样看来的话 这是一道简单题了
import java.util.Scanner;

import java.util.Map;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while (in.hasNextLine()) {
            String cmd = in.nextLine();
            // 字符串的匹配
            getConfigFile(cmd);
        }
    }

    private static Map<String, String> map = new HashMap<String, String>() {
        {
            put("reset", "reset what");
            put("reset board", "board fault");
            put("board add", "where to add");
            put("board delete", "no board at all");
            put("reboot backplane", "impossible");
            put("backplane abort", "install first");
        }
    };

    public static void getConfigFile(String cmd) {
        // 字符串的匹配
        String[] strArray = cmd.split(" ");
        String result = "unknown command";

        // 不符合的命令
        if (strArray.length > 2) System.out.println(result);
        // 一个命令的
        else if (strArray.length == 1) {
            if ("reset".startsWith(strArray[0])) {
                System.out.println(map.get("reset"));
            } else {
                System.out.println(result);
            }
        } else {
            // 两个命令的
            int count = 0;
            for (String key : map.keySet()) {
                if (key.equals(cmd)) {
                    // 完全匹配
                    result = map.get(key);
                    break;
                } else {
                    // 模糊的匹配
                    String[] keyArray = key.split(" ");
                    if (keyArray.length > 1  && keyArray[0].startsWith(strArray[0]) &&
                            keyArray[1].startsWith(strArray[1])) {
                        result = map.get(key);
                        count++;
                    }
                }
            }
            System.out.println(count > 1 ? "unknown command" : result);
        }
    }
}