美文网首页
2021-07-31 箱子问题

2021-07-31 箱子问题

作者: 何几时 | 来源:发表于2021-07-31 22:09 被阅读0次

    题意:侯同学助人为乐,帮同事搬家,把物品放进小箱子,再将小箱子放进大箱子,一段操作后侯同学忘了用几个箱子,请帮他算出箱子的个数?[]代表一个箱子,[]3代表3个箱子,[[]3]代表1个大箱子里放4个小箱子一共是4个箱子。


    输入描述:
    一行字符串boxea,代表箱子的摆放情况。(boxes长度len,2<=len<=10^6)
    对于输入的箱子:
    1、保证一定是完整的箱子[1,不会出现半个箱子[
    2、保证箱子套箱子的层数dep,1<=dep<=10
    3、[]x,2<=x<=9([]x见题意)
    输出描述:
    输出箱子的数量count。
    1<=count<2^31


    特殊样例
    输入:[][][[[]3[]2]2]2
    输出:28

    import sys
    from collections import deque
    
    line = sys.stdin
    line = line.strip()
    
    
    q = deque()
    cnt = 1
    res = 0
    total = 0
    allTotal = 0
    # 判断是不是平行
    flag = False
    for i in range(0, len(line) - 1):
        # 判断入不入栈
        if line[i] == ']':
            while q[-1] != '[':
                q.pop()
            q.pop()
        else:
            q.append(line[i])
    
        if line[i] == '[':
            res = 0
            flag = True
        if line[i] == ']':
            if not flag:
                res = total
            if line[i+1].isalnum():
                cnt = int(line[i+1])
                res = cnt * res + cnt
            else:
                res += 1
            if flag:
                total += res
            else:
                total = res
            flag = False
    
        if len(q) == 0:
            allTotal += total
            total = 0
    
    # 如果结尾不是以数字而是 ] 结尾
    if total != 0:
        allTotal += res
        allTotal += 1
    
    print(allTotal)
    

    相关文章

      网友评论

          本文标题:2021-07-31 箱子问题

          本文链接:https://www.haomeiwen.com/subject/ksgkvltx.html