题目:
输入多组数据,左边括号匹配不上,用“I”标记为 ,右边括号匹配不上用“?”标记
输入:
((((jei)fr)?
输出:
((((jei)fr)
II
输入:
)))()
输出
)))()
???
思路就是使用Python的列表,模拟堆栈,入栈出栈,使用列表的追加和remove等方法替代
def kuohao(s):
a = []
mark = []
for i in range(len(s)):
if s[i] == "(":
a.append(s[i])
mark.append("I")
elif s[i] != ")":#数字、其他字符等,追加空格符号
mark.append(" ")
else:#如果是右括号,在下面再处理
pass
if len(a) != 0 and s[i] == ")":#当栈不为空时,进行匹配,匹配之后弹出元素
mark.append(" ")
a.remove("(")
for j in range(len(mark)-1, -1, -1):#吧mark中匹配上的元素从I变为空格
if mark[j] == "I":
mark.remove("I")
mark.insert(j, " ")#这个是在某个位置插入不是修改
break
elif len(a) == 0 and s[i] == ")":#如果没有左括号了,那么出现的右括号全部标记为?
mark.append("?")
else:
continue
print(s)
print("".join(i for i in mark))
if __name__ == "__main__":
while True:
s = input()
kuohao(s)