题解 | #配置文件恢复#

配置文件恢复

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

import java.util.*;

public class Main {
    // 定义命令及其对应的输出
    private static final Map<List<String>, String> commands = new HashMap<List<String>, String>() {{
        put(Arrays.asList("reset"), "reset what");
        put(Arrays.asList("reset", "board"), "board fault");
        put(Arrays.asList("board", "add"), "where to add");
        put(Arrays.asList("board", "delete"), "no board at all");
        put(Arrays.asList("reboot", "backplane"), "impossible");
        put(Arrays.asList("backplane", "abort"), "install first");
    }};

    public static List<String> processCommands(List<String> inputs) {
        List<String> results = new ArrayList<>();

        for (String input : inputs) {
            String[] keywords = input.split(" ");
            List<List<String>> matches = new ArrayList<>();

            // 遍历命令集,查找符合输入的最短唯一匹配
            for (List<String> command : commands.keySet()) {
                boolean match = true;

                // 检查每个关键字是否匹配
                for (int i = 0; i < keywords.length; i++) {
                    if (i >= command.size() || !command.get(i).startsWith(keywords[i])) {
                        match = false;
                        break;
                    }
                }

                if (match && command.size() == keywords.length) { // 确保输入的关键字数量和命令的关键字数量一致
                    matches.add(command);
                }
            }

            // 根据匹配结果确定输出内容
            if (matches.size() == 1) {
                results.add(commands.get(matches.get(0)));
            } else {
                results.add("unknown command");
            }
        }
        return results;
    }

    public static void main(String[] args) {
        Scanner fzhinput = new Scanner(System.in);
        List<String> inputs = new ArrayList<>();


        // 逐行接收输入,直到遇到空行或没有更多行
        while (fzhinput.hasNextLine()) {
            String input = fzhinput.nextLine().trim();
            if (input.isEmpty()) break;
            inputs.add(input);
        }

        // 处理输入并输出结果
        List<String> output = processCommands(inputs);
        output.forEach(System.out::println);
        
        fzhinput.close();
    }
}

全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务