题解 | #配置文件恢复#字典+分支处理

配置文件恢复

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //字典存储指令-结果
        HashMap<String,String> map=new HashMap<>();
        String[] opra=new String[]{"reset","reset board","board add","board delete","reboot backplane","backplane abort"};
        String unknow="unknown command";
        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");
        
        while(in.hasNextLine()){
            String order=in.nextLine();
            //先检查是否是完整的命令,如果是,直接输出操作结果
            if(map.containsKey(order)){
                System.out.println(map.get(order));
            }else{
                //再看是否是单一指令,单字串指令只有一条,很好辨别
                String[] t=order.split(" ");
                if(t.length==1){
                    if(suit(opra[0],t[0])) {
                        System.out.println(map.get(opra[0]));
                    }else{
                        System.out.println(unknow);
                    }
                //再处理长度为2的操作指令:遍历指令进行匹配(首字母开始)
                }else if(t.length==2){
                    ArrayList<String> result=new ArrayList<>();
                    for(int i=1;i<opra.length;i++){
                        String[] order_words=opra[i].split(" ");
                        if(suit(order_words[0],t[0]) && suit(order_words[1],t[1])){
                            result.add(map.get(opra[i]));
                        }
                    }
                    //未匹配的活着匹配不止一个的也是非法指令
                    if(result.size()==0 || result.size()>1){
                        System.out.println(unknow);
                    }else{
                        System.out.println(result.get(0));
                    }
                //其他长度都为非法指令    
                }else{
                    System.out.println(unknow);
                }
            }
        }
    }
     public static boolean suit(String opra,String str){
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)!=opra.charAt(i)){
                return false;
            }
        }
        return true;
     }
}

不需要很新颖的技术,但是需要对题目的大量信息表示的逻辑分支一条条处理

全部评论

相关推荐

怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:08
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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