题解 | #配置文件恢复#

配置文件恢复

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
}

全部评论

相关推荐

浅白lw:其实是牛马自己换马了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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