题解 | #配置文件恢复#
配置文件恢复
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()