首页 > 试题广场 >

配置文件恢复

[编程题]配置文件恢复
  • 热度指数:111124 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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

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

注意:he he不是命令。

为了简化输入,方便用户,以“最短唯一匹配原则”匹配(注:需从首字母开始进行匹配):

1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset,执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what;
2、若只输入一字串,但匹配命令有两个关键字,则匹配失败。例如输入:reb,可以找到命令reboot backpalne,但是该命令有两个关键词,所有匹配失败,执行结果为:unknown command

3、若输入两字串,则先匹配第一关键字,如果有匹配,继续匹配第二关键字,如果仍不唯一,匹配失败。
例如输入:r b,找到匹配命令reset board 和 reboot backplane,执行结果为:unknown command。
例如输入:b a,无法确定是命令board add还是backplane abort,匹配失败。

4、若输入两字串,则先匹配第一关键字,如果有匹配,继续匹配第二关键字,如果唯一,匹配成功。例如输入:bo a,确定是命令board add,匹配成功。
5、若输入两字串,第一关键字匹配成功,则匹配第二关键字,若无匹配,失败。例如输入:b addr,无法匹配到相应的命令,所以执行结果为:unknow command。
6、若匹配失败,打印“unknown command”

注意:有多组输入。
数据范围:数据组数:,字符串长度
进阶:时间复杂度:,空间复杂度:

输入描述:

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



输出描述:

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

示例1

输入

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
头像 牛客797476880号
发表于 2021-09-20 12:41:27
''' 自己写的用正则匹配太low了,看了@中年美少女写的切片思想佩服了,另外不用字典免去了双层循环的做法,偷来粘在这里供大家欣赏。 ''' while True: try: m=input().strip().split() key=["reset 展开全文
头像 IAMLEUNGWEI
发表于 2021-03-30 09:56:55
题解比较少,我来写一个吧。关键点:1.先判断输入字符串的长度,长度为1时,只匹配关键词为1的字符串,比如输入r只能匹配reset,同理长度为2的只能匹配关键词长度为2的字符串,比如输入r b,只能匹配reset board和reboot backplane。2.如果匹配出的结果不唯一,也就是匹配到两 展开全文
头像 中年美少女
发表于 2020-09-10 16:21:33
1.多行输入strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 command.strip().split()2.此时,如果command只有一个值,也要用command[0]。(在本地运行的时候,是不用的)3.题目的解释:【例如输入:r,根据该规则,匹配命令rese 展开全文
头像 虹色萤火虫
发表于 2020-08-28 21:07:27
纯C #include <stdlib.h> #include <stdio.h> #include <string.h> char *cmd1[6] = {"reset", "reset", "board", "board", "reboot", "backp 展开全文
头像 玖语
发表于 2020-06-20 10:48:46
本题是关于字符串匹配的题。先用哈希表将命令都存起来,然后再建立一个包含所有命令的字符串数组类型的哈希视图。然后用输入的字符串数组与该视图的每一个元素去匹配比较。 import java.util.Scanner; import java.util.Map; import java.util.Hash 展开全文
头像 桃大王加油呀
发表于 2020-09-04 22:47:53
考虑的比较简单,完全直译。。。 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); St 展开全文
头像 午·阳
发表于 2021-12-18 15:46:53
import java.util.*; public class Main{ static Map<String, String> map = new HashMap<String, String>(){ { put("res 展开全文
头像 码工在南京
发表于 2022-02-11 11:55:20
import java.util.*; import java.lang.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); 展开全文
头像 你敲代码的样子好像蔡徐坤
发表于 2021-10-01 21:10:29
#include<bits/stdc++.h> using namespace std; int main() { string input; vector<pair<string, string>> instru = {{"reset",""}, 展开全文
头像 法拉利201903231900848
发表于 2019-08-23 16:19:18
import sys oneKey='reset' twoKeys=['reset board','board add','board delet','reboot backplane','backplane abort'] do=['board fault','where to add','no 展开全文