题解 | #参数解析#

参数解析

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

全部评论

相关推荐

2025-12-22 15:25
南京工业大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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