题意:侯同学助人为乐,帮同事搬家,把物品放进小箱子,再将小箱子放进大箱子,一段操作后侯同学忘了用几个箱子,请帮他算出箱子的个数?[]代表一个箱子,[]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)
网友评论