题解 | #配置文件恢复#

配置文件恢复

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

import java.util.*;

public class Main{
    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 main(String []args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String cmd = sc.nextLine();
            calculate(cmd);
        }
    }
    
    public static void calculate(String cmd) {
        String[] cmdArr = cmd.split(" ");
        if (cmdArr.length == 1) {
            if ("reset".contains(cmd)) {
                System.out.println(map.get("reset"));
            } else {
                System.out.println("unknown command");
            }
        } else {
            String result = "unknown command";
            int count = 0;
            for (String key : map.keySet()) {
                if (key.equals(cmd)) {
                    result = map.get(key);
                    break;
                } else {
                    String[] keyArr = key.split(" ");
                    if (keyArr.length > 1 && keyArr[0].indexOf(cmdArr[0]) == 0 && keyArr[1].indexOf(cmdArr[1]) == 0) {
                         result = map.get(key);
                         count++;
                    } 
                }
            }
            System.out.println(count > 1 ? "unknown command" : result);
        }
    }
}
全部评论
有两个小bug: 1, 题目要求(注:需从首字母开始进行匹配),匹配reset的时候用的contains,输入e或者s都会成功。 2, 没有判断当空格过多的情况,比如输入三个单词也会匹配成功(虽然这个题目没有要求,但理论上应该失败)。
3 回复 分享
发布于 2022-08-15 17:02
找匹配不得用startsWith()方法吗?
2 回复 分享
发布于 2023-02-05 14:35 广东
count的作用是,如果发现输入的命令匹配多个已有命令,则表示匹配失败
点赞 回复 分享
发布于 2022-07-13 16:38
优雅
点赞 回复 分享
发布于 05-05 11:19 浙江

相关推荐

躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
09-25 10:34
东北大学 Java
多面手的小八想要自然醒:所以读这么多年到头来成为时代车轮底下的一粒尘
点赞 评论 收藏
分享
16 2 评论
分享
牛客网
牛客企业服务