题解 | #配置文件恢复#

配置文件恢复

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();
    }
}

全部评论

相关推荐

“校招”、“3-5年经验”
xiaolihuamao:逆向工程不是搞外挂的吗,好像现在大学生坐牢最多的就是诈骗罪和非法侵入计算机系统罪,发美金,还居家办公,就是怕被一锅端,
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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