题解 | #配置文件恢复#

配置文件恢复

https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5

import java.util.Scanner;
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static HashMap<String, String> map = new HashMap<>();
    public static void main(String[] args) {
        init();
        Scanner in = new Scanner(System.in);
        List<String> orderList = new ArrayList<>();
        map.forEach((k, v)->orderList.add(k));
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String orderStr = in.nextLine();
            // 匹配命令
            matchOrder(orderStr, orderList);
        }
    }

    public static void matchOrder(String order, List<String> orderList) {
        String errorMsg = "unknown command";
        String[] arrays = order.split(" ");
        // 先根据最左匹配原则匹配
        List<String > resList = new ArrayList<>();
        for (String orderCommit : orderList) {
            if (orderCommit.startsWith(arrays[0])) {
                resList.add(orderCommit);
            }
        }
        if (resList.isEmpty()) {
            System.out.println(errorMsg);
            return;
        }
        if (arrays.length == 1) {
            // 有多条的情况。查看是否命令中多条含有字符串空格
            resList.removeIf(res->res.contains(" "));
            if (resList.size() == 1) {
                System.out.println(map.get(resList.get(0)));
            } else {
                System.out.println(errorMsg);
            }
        } else {
            // 多条匹配, 第二个命令字符串
            String secondOrder = arrays[1];
            // 只取第二行字符串的
            resList.removeIf(res->!res.contains(" " + secondOrder));
            if (resList.size() == 1) {
                System.out.println(map.get(resList.get(0)));
            } else {
                System.out.println(errorMsg);
            }
        }
    }

    public static void init() {
        map.put("reset", "reset what");
        map.put("reset board", "board fault");
        map.put("board add", "where to add");
        map.put("board delete", "no board at all");
        map.put("reboot backplane", "impossible");
        map.put("backplane abort", "install first");
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 17:59
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务