题解 | #配置文件恢复#

配置文件恢复

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

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)
// 创建map
var mymap = map[string]string{
	"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",
}
func main() {
	scan := bufio.NewScanner(os.Stdin)
	// 多次扫描
	for scan.Scan() {
		ok, cmd := Test(scan.Text())
		if ok {
			fmt.Println(cmd)
		} else {
			fmt.Println("unknown command")
		}
	}
}
func Test(str string) (ok bool, res string) {
	strarr := strings.Split(str, " ")
	length:=len(strarr)
	var resarr []string
	// 看那些指令符合
	for k,v:=range mymap{
		cmdarr:=strings.Split(k," ")
		// 指令个数是否相同
		if length==len(cmdarr){
			isok:=true
			var flag []bool
			// 循环看一下是否用户输入和指令是否对的上
			for i:=0;i<length;i++{
			// if strarr[i]!=cmdarr[i][:len(strarr[i])]这个判断条件是有问的,因为指令组成单词有长有短
			// 这边用了index方法进行判断
				if strings.Index(cmdarr[i], strarr[i])!=0{
					flag = append(flag, false)
					// 有一个false直接break
					break
				}else{
					flag = append(flag, true)
				}
			}
			for _,j:=range flag{
				if !j{
					isok=false
					break
				}
			}
			// 全部ok就加入待选数组
			if isok{
				resarr=append(resarr, v)
			}
		}else{
			continue
		}
	}
	// 对待选数组进行判断
	if len(resarr)==1{
		ok=true
		res=resarr[0]
		return
	}
	return
}

全部评论

相关推荐

白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。 2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。 3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。
面试被问期望薪资时该如何...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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