题解 | #配置文件恢复#

配置文件恢复

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()

全部评论

相关推荐

点赞 评论 收藏
分享
怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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