题解 | #配置文件恢复#

配置文件恢复

https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5

package main

//建立一个map叫做command依次存放所有存在的命令组合,
//如果这个key存在 则重置为unknow 例"b a"第一次存放时command["b a"]="where to add"
//第二次在“backplane abort”也会存在"b a"命令,此时将command["b a"]="unknown command"
//读取屏幕输入以回车结束
import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	command := make(map[string]string)
	un := "unknown command"
	initMap("reset", "", "reset what", un, command)
	initMap("reset", "board", "board fault", un, command)
	initMap("board", "add", "where to add", un, command)
	initMap("board", "delete", "no board at all", un, command)
	initMap("reboot", "backplane", "impossible", un, command)
	initMap("backplane", "abort", "install first", un, command)

	sc := bufio.NewScanner(os.Stdin)
	for sc.Scan() {
		cmd := sc.Text()
        //判断cmd命令是否存在于map
		todo, ok := command[cmd]
		if ok {
			fmt.Println(todo)
		} else {
			fmt.Println(un)
		}
	}

}

func initMap(first string, second string, todo string, unknow string, comd map[string]string) {
	if len(second) == 0 {
		for i := 0; i < len(first); i++ {
			comd[first[:i+1]] = todo
		}
	} else {
		for i := 0; i < len(first); i++ {
			for j := 0; j < len(second); j++ {
				if _, ok := comd[first[:i+1]+" "+second[:j+1]]; !ok {
					comd[first[:i+1]+" "+second[:j+1]] = todo
				} else {
					comd[first[:i+1]+" "+second[:j+1]] = unknow
				}
			}
		}
	}
}


全部评论

相关推荐

能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务