题解 | #参数解析#

参数解析

https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677

package main

import (
	"fmt"
	"bufio"
    "os"
)

func parseParams(cmd string) []string {
    var params []string

    left, right := 0, 0
    var substr string
    for right < len(cmd) {
        if cmd[right] == '"' {
            right++
            start := right
            for cmd[right] != '"' {right++}
            substr = cmd[start:right]
            params = append(params, substr)

            // 跳过 “ 和 空格
            right += 2
            left = right
        } else if cmd[right] == ' ' {
            substr = cmd[left:right]
            params = append(params, substr)
            right++
            left = right
        } else {
            right++
        }
    }

    return params
}

func main() {
    inputReader := bufio.NewReader(os.Stdin)
    line, _, _ := inputReader.ReadLine()

    cmd := string(line)

    // 在字符串最后加一个空格,避免处理最后一个的情况
    cmd += " "

    params := parseParams(cmd)
    fmt.Println(len(params))

    for _, param := range params {
        fmt.Println(param)
    }
}
// 本题输入一个带空格的字符串,所以采用:inputReader.ReadLine()

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-12 18:14
RT,这周五就是情人节了,前女友给我发了消息,我该不该回?
Yoswell:原则上来说让她滚,但是本着工作很累下班想吃瓜的心态,我觉得你可以回一下
点赞 评论 收藏
分享
02-11 12:20
门头沟学院 Java
面试中的青提很胆小:我不信有比我们学校更逆天的,计算机专业就业第一位是我们学校二餐厅的打印店
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务