解题思路:
- 这个恢复命令的题目吧, 感觉比较固化一些;
- 区分命令的长度 然后通过字符串的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);
}
}
}