题解 | #配置文件恢复#
配置文件恢复
http://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5
Java正则表达式解法:
import java.util.*; import java.util.regex.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String[] commands = {"reset", "reset board", "board add", "board delete", "reboot backplane", "backplane abort"}; String[] responses = {"reset what", "board fault", "where to add", "no board at all", "impossible", "install first", "unknown command" }; while (in.hasNextLine()) { String input = in.nextLine(); if(input.isEmpty()){//阻止最后一行的空行输出unknown command continue; } int match_num = 0;//记录有多少match的指令 int index = 6;//记录最后一个match的指令的下表 for(int i=0;i<commands.length;i++){ if(match(input, commands[i])){ match_num++; index = i; } } if(match_num!=1){ index = 6; } System.out.println(responses[index]); } } public static boolean match(String input, String command){ if(input.isEmpty()){//空白输入不应该有符合的结果 return false; } String[] inputs = input.split(" "); String[] commands = command.split(" "); if(inputs.length==1 && commands.length==1){ String pattern = input+".*"; return Pattern.matches(pattern, command); }else if(inputs.length==2 && commands.length==2){ String pattern_1 = inputs[0]+".*"; String pattern_2 = inputs[1]+".*"; return Pattern.matches(pattern_1, commands[0]) && Pattern.matches(pattern_2, commands[1]); } return false; } }