在一行中输入一个字符串
,长度
,由可见字符组成。
如果字符串
中的括号部分能构成合法括号序列,则输出
;否则输出
。
abcd(])[efg
false
提取括号 `(`、`)`、`[`、`]` 后为 `(])[`,不是合法括号序列。
a[x(y)z]
true
提取括号后为 `[()]`,是合法括号序列。
class My_Stack:
def __init__(self, elements=[]):
self._elements = list(elements)
def is_empty(self):
#return not self._elements
return self._elements == []
def push(self, element):
self._elements.append(element)
def pop(self):
if self.is_empty():
raise ValueError
element = self._elements.pop()
return element
def func(input_str):
st = My_Stack()
for ch in input_str:
if ch == "[" or ch == "(":
st.push(ch)
elif ch == "]":
if st.is_empty():
print("false")
return
element = st.pop()
if element != "[":
print("false")
return
elif ch == ")":
if st.is_empty():
print("false")
return
element = st.pop()
if element != "(":
print("false")
return
else:
continue
if not st.is_empty():
print("false")
else:
print("true")
input_str = input()
func(input_str) """"
括号匹配,借助栈后进先出的性质
"""
if __name__ == "__main__":
s = input().strip()
ans = True
flag = []
for c in s:
if c == '[' or c == '(':
flag.append(c)
elif c == ']':
if not flag or flag.pop() != '[':
ans = False
break
elif c == ')':
if not flag or flag.pop() != '(':
ans = False
break
else:
pass
if flag:
ans = False
print("true" if ans else "false")