【华为OJ】【100-配制文件恢复】
来源:互联网 发布:淘宝网1.4 餐桌 编辑:程序博客网 时间:2024/06/05 17:54
【华为OJ】【算法总篇章】
【华为OJ】【100-配制文件恢复】
【工程下载】
题目描述
有6条配置命令,它们执行的结果分别是:命令 执行reset reset whatreset board board faultboard add where to addboard delet no board at allreboot backplane impossiblebackplane abort install firsthe he unkonw command注意:he he不是命令。为了简化输入,方便用户,以“最短唯一匹配原则”匹配:1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset, 执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what;2、若只输入一字串,但本条命令有两个关键字,则匹配失败。例如输入:reb,可以找到命令reboot backpalne, 但是该命令有两个关键词,所有匹配失败,执行结果为:unkown command3、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果仍不唯一,匹配失败。 例如输入:r b,找到匹配命令reset board,执行结果为:board fault。4、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果唯一,匹配成功。 例如输入:b a,无法确定是命令board add还是backplane abort,匹配失败。5、若输入两字串,第一关键字匹配成功,则匹配第二关键字,若无匹配,失败。例如输入:bo a,确定是命令board add,匹配成功。6、若匹配失败,打印“unkonw command”
输入描述
多行字符串,每行字符串一条命令
输出描述
执行结果,每条命令输出一行
输入例子
resetreset boardboard addboard deletreboot backplanebackplane abort
输出例子
reset whatboard faultwhere to addno board at allimpossibleinstall first
算法实现
import java.util.*;/** * Author: 王俊超 * Time: 2016-05-04 21:02 * CSDN: http://blog.csdn.net/derrantcm * Github: https://github.com/Wang-Jun-Chao * Declaration: All Rights Reserved !!! */public class Main { private final static String[] ACTION = { "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" }; private final static String UC = "unkown command"; public static void main(String[] args) { Scanner scanner = new Scanner(System.in);// Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data2.txt")); List<String> cmds = new LinkedList<>(); while (scanner.hasNextLine()) { String cmd = scanner.nextLine(); cmds.add(cmd);// System.out.println(num + " " + command); } System.out.print(fileRestore(cmds)); scanner.close(); } private static String fileRestore(List<String> cmds) { StringBuilder builder = new StringBuilder(); for (String cmd : cmds) {// System.out.println(cmd + ": " + getAction(cmd)); builder.append(getAction(cmd)).append('\n'); } return builder.toString(); } private static String getAction(String cmd) { String[] part = cmd.split("(\\s)+"); // 如果是一字串,只有第一个命令是一字串 if (part.length == 1) { // 是以part[0]开头 if (ACTION[0].startsWith(part[0])) { // 返回执行命令 return ACTION[1]; } else { return UC; } } else if (part.length == 2) { // 除了第一个命令其它的都是二字串 int count = 0; String result = UC; // 检查是否匹配命令 for (int i = 2; i < ACTION.length; i += 2) { String[] cmdPart = ACTION[i].split("(\\s)+"); if (cmdPart[0].startsWith(part[0]) && cmdPart[1].startsWith(part[1])) { count++; result = ACTION[i + 1]; } } // 刚好找到一个匹配的 if (count == 1) { return result; } // 没有找到或者找到多个匹配的 else { return UC; } } // 除了一字串和二字串,没有其它串 else { return UC; } }}
1 0
- 【华为OJ】【100-配制文件恢复】
- 华为OJ题目 配置文件恢复
- 华为OJ——配置文件恢复
- 华为OJ——配置文件恢复
- 华为OJ——配置文件恢复
- 配制文件
- 华为p9plus误删文件怎么恢复
- 华为OJ
- 华为oj:
- log4j配制文件
- JBOSS配制文件
- lighttp 配制文件
- 设置sudoers配制文件
- WCF配制文件详解
- tnsnames.ora配制文件
- tomcat配制文件说明
- MongoDB配制文件详解
- vim常用配制文件
- Timer 定时任务
- EmguCV学习
- 中缀表达式转后缀表达式
- Build Your First Mobile App With Ionic 2 & Angular 2 - Part 6
- 重建所有索引
- 【华为OJ】【100-配制文件恢复】
- 234. Palindrome (Linked List)
- centos6.5搭建一个git服务器
- TextView控件
- memcache安装
- mac下配置Qt for Android编译环境
- Build Your First Mobile App With Ionic 2 & Angular 2 - Part 7
- printf输出格式总结
- Airbnb 分享经济步步紧逼:传统酒店老板要和出租车司机同病相怜?