题解 | #配置文件恢复#
配置文件恢复
https://www.nowcoder.com/practice/ca6ac6ef9538419abf6f883f7d6f6ee5
package main
import (
"fmt"
"strings"
"bufio"
"os"
)
func matchCmd(cmd string) string {
m := make(map[string]string, 0)
m["reset"] = "reset what"
m["reset board"] = "board fault"
m["board add"] = "where to add"
m["board delete"] = "no board at all"
m["reboot backplane"] = "impossible"
m["backplane abort"] = "install first"
// 进行匹配
misMatchErrMsg := "unknown command"
argv := strings.Split(cmd, " ")
if len(argv) == 1 {
for k, v := range m {
if strings.HasPrefix(k, argv[0]) {
ks := strings.Split(k, " ")
if len(ks) == 1 {
return v
}
}
}
return misMatchErrMsg
}
if len(argv) == 2 {
var matchCmdCount int
var targetKey string
for k:= range m {
ks := strings.Split(k, " ")
if len(ks) != 2 {
continue
}
if strings.HasPrefix(ks[0], argv[0]) && strings.HasPrefix(ks[1], argv[1]) {
matchCmdCount++
targetKey = k
}
}
if matchCmdCount == 1 {
return m[targetKey]
}
}
return misMatchErrMsg
}
func main() {
inputReader := bufio.NewReader(os.Stdin)
for {
line, _, _ := inputReader.ReadLine()
if len(line) == 0 {
break
}
cmd := string(line)
fmt.Println(matchCmd(cmd))
}
}
// 本题输入多行带空格的字符串,所以采用:inputReader.ReadLine()


