题解 | #配置文件恢复#
配置文件恢复
https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5
妙用str.startsWith(str1); 判断str字符串是否是根绝str1开头的,是返回true,否者返回false;
通过map存储命令对应的执行。
再通过set 存储命令数组,如果有空格,则会存进来两个。然后直接遍历判断。
再通过sgin标识,判断是否只匹配了一个命令,如果匹配多个命令,则输出 unknown command
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 添加命令
HashMap<String,String> map = new HashMap<String,String>();
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");
// 添加命令视图
HashSet<String[]> set = new HashSet();
for(String str : map.keySet() ){
set.add( str.split(" ") );
}
while (in.hasNextLine()) {
String[] a = in.nextLine().split(" ");
int sgin = 0;
String res = "";
for(String[] str : set){
if(str.length == a.length && str.length ==1){
if(str[0].startsWith(a[0]) ){
res = map.get(str[0]);
sgin++;
}
}
if(str.length == a.length && str.length ==2){
if(str[0].startsWith(a[0]) && str[1].startsWith(a[1]) ){
res = map.get(str[0] + " "+ str[1]);
sgin++;
}
}
}
if(sgin != 1){
System.out.println("unknown command");
}else{
System.out.println(res);
}
}
}
}
#22届#public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 添加命令
HashMap<String,String> map = new HashMap<String,String>();
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");
// 添加命令视图
HashSet<String[]> set = new HashSet();
for(String str : map.keySet() ){
set.add( str.split(" ") );
}
while (in.hasNextLine()) {
String[] a = in.nextLine().split(" ");
int sgin = 0;
String res = "";
for(String[] str : set){
if(str.length == a.length && str.length ==1){
if(str[0].startsWith(a[0]) ){
res = map.get(str[0]);
sgin++;
}
}
if(str.length == a.length && str.length ==2){
if(str[0].startsWith(a[0]) && str[1].startsWith(a[1]) ){
res = map.get(str[0] + " "+ str[1]);
sgin++;
}
}
}
if(sgin != 1){
System.out.println("unknown command");
}else{
System.out.println(res);
}
}
}
}
