第一题:薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
1.输入字符包括,"(",")"和"<"和其他字符。
2.其他字符表示笔记内容。
3.()之间表示注释内容,任何字符都无效。括号保证成对出现。
4."<"表示退格,删去前面一个笔记内容字符。括号不受"<"影响。
思路:利用栈的思路:遍历一次,模拟遇到的各类情况。
s = raw_input().strip()
res,brackets = [],0
for c in s:
if c=='(':
brackets += 1
elif c==')':
brackets -= 1
elif brackets==0:
if c=='<':
res.pop()
else:
res.append(c)
print "".join(res)
第二题:字符串的压缩问题:
输入描述:
输入第一行包含一个字符串s,代表压缩后的字符串。
S的长度<=1000;
S仅包含大写字母、[、]、|;
解压后的字符串长度不超过100000;
压缩递归层数不超过10层;
输出描述:
输出一个字符串,代表解压后的字符串。
输入例子1:
HG[3|B[2|CA]]F
输出例子1:
HGBCACABCACABCACAF
解析+代码
import sys
while True:
line = sys.stdin.readline().strip()
if line == "":
break
stack = []
for s in line:
if s != "]":
stack.append(s)
else:
temp = ''
while stack and stack[-1]!= "|":
temp = stack.pop() + temp
stack.pop()
times = ""
while stack and stack[-1].isdigit():
times = stack.pop() + times
stack.pop()
stack.append(int(times)*temp)
print("".join(stack))
转载请注明原文地址:https://ipadbbs.8miu.com/read-43656.html