zoukankan      html  css  js  c++  java
  • 配置文件恢复

    描述

    有6条配置命令,它们执行的结果分别是:

    命   令 执   行
    reset reset what
    reset board board fault
    board add where to add
    board delet no board at all
    reboot backplane impossible
    backplane abort install first
    he he unkown command

     注意:he he不是命令。

    为了简化输入,方便用户,以“最短唯一匹配原则”匹配:
    1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset,执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what;
    2、若只输入一字串,但本条命令有两个关键字,则匹配失败。例如输入:reb,可以找到命令reboot backpalne,但是该命令有两个关键词,所有匹配失败,执行结果为:unkown command
    3、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果仍不唯一,匹配失败。例如输入:r b,找到匹配命令reset board和reboot backplane,执行结果为:"unkown command"。

    4、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果唯一,匹配成功。例如输入:b a,无法确定是命令board add还是backplane abort,匹配失败。
    5、若输入两字串,第一关键字匹配成功,则匹配第二关键字,若无匹配,失败。例如输入:bo a,确定是命令board add,匹配成功。
    6、若匹配失败,打印“unkown command”

    知识点 字符串
    运行时间限制 0M
    内存限制 0
    输入

    多行字符串,每行字符串一条命令

    输出

    执行结果,每条命令输出一行

    样例输入 reset reset board board add board delet reboot backplane backplane abort
    样例输出 reset what board fault where to add no board at all impossible install first
    package com.oj.test;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    public class Test {
    	
    	private static String find(String str, Map<Integer, String> mapping, Map<Integer, String> base) {
    		String[] input = str.split(" ");
    		if(input.length==1&&"reset".startsWith(input[0]))
    			return mapping.get(1);
    		else if(input.length==2){
    			int[] flag = new int[7];
    			for(int i = 2;i <= 6; i++){
    				String[] test = base.get(i).split(" ");
    				if(test[0].startsWith(input[0])&&test[1].startsWith(input[1]))
    					flag[i] = 1;
    			}
    			int sum = 0;
    			for(int i = 0;i < 7; i++)
    				sum += flag[i];
    			if(sum==1){
    				for(int i = 0;i < 7; i++)
    					if(flag[i]==1)
    						return mapping.get(i);
    			}
    		}
    		return mapping.get(7);
    	}
    	
    	public static void main(String[] args) {
    		Map<Integer,String> mapping = new HashMap<Integer,String>();
    		mapping.put(1, "reset what");
    		mapping.put(2, "board fault");
    		mapping.put(3, "where to add");
    		mapping.put(4, "no board at all");
    		mapping.put(5, "impossible");
    		mapping.put(6, "install first");
    		mapping.put(7, "unkown command");
    		Map<Integer,String> base = new HashMap<Integer,String>();
    		base.put(1, "reset");
    		base.put(2, "reset board");
    		base.put(3, "board add");
    		base.put(4, "board delet");
    		base.put(5, "reboot backplane");
    		base.put(6, "backplane abort");
    		Scanner in = new Scanner(System.in);
    		String str;
    		while((str=in.nextLine()) != null){
    			System.out.println(find(str,mapping,base));
    		}
    		
    	}
    
    	
    }
    

      

    态度决定高度,细节决定成败,
  • 相关阅读:
    Mysql的表名/字段名/字段值是否区分大小写
    20个PHP程序性能优化的方法
    PHP中大括号用法
    PHP伪类型和伪变量
    PHP中关于取模运算及符号
    PHP之array_flip()方法
    PHP之implode()方法
    PHP中is_null()方法
    原型模式(Prototype)
    适配器模式
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/5268085.html
Copyright © 2011-2022 走看看