题解 | #参数解析#

参数解析

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

与HJ70题类似的利用栈的概念,专门有一个list记录前引号在栈中出现的位置,方便一次性弹出引号内部字符并组装,再放入同样的位置。
s = input().split()[::-1]
stack = []
pos = []
while len(s) > 0:
    ele = s.pop()
    if ele[0] == '"':
        pos.append(len(stack))
        if ele[-1]=='"':
            stack.append(ele[1:-1])
        else:
            stack.append(ele[1:])

        #print('pos',pos)
        #print('front',stack)
    elif ele[-1] == '"':
        front = pos.pop()
        temp = [ele[:-1]]
        while len(stack) > front:
            temp.append(stack.pop())
            ## 考虑到 “ab ab”的顺序,此处temp不能str形式直接用+=
            ## 否则翻转顺序时会颠倒ab-->ba
        #print('temp',temp)
        stack.append(' '.join(map(str, temp[::-1])))
        ## 引号间的多个字符串中间是以空格隔开,现在将
        ## 建立s时去掉的空格补回来
        #print('end',stack)
    else:

        stack.append(ele)
        #print('+',stack)

print(len(stack))
for i in stack:
    print(i)

""" 需要注意的测试用例
u "a e i o u" r
ab "ab ab"
"""


全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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