括号匹配
我们在这里做简单的括号匹配,即只含‘()’的括号。我们使用的是栈。
定义栈:
class Stack(object):
def __init__(self):
self.item = []
def isEmpty(self):
return self.item == []
def push(self, data):
self.item.append(data)
def pop(self):
return self.item.pop()
def search(self, x):
return self.item.index(x)
def size(self):
return len(self.item)
简单括号匹配函数
def checker(s):
stack = Stack()
valid = True # 判断括号是否匹配
index = 0
while(index < len(s) and valid):
if s[index] == '(':
stack.push(s[index])
else:
if stack.isEmpty():
valid = False
else:
stack.pop()
index += 1
if stack.isEmpty(): # 如果最后栈里还有括号,证明,右括号少了,同样不匹配
return valid
else:
return not valid
复杂括号匹配函数
思路就是把所有的[]{}转换为()。
def checker(s):
stack = Stack()
valid = True # 判断括号是否匹配
index = 0
s1 = ''
for i in range(len(s)):
if s[i] == '[' or s[i] == '{':
s1+='('
elif s[i] == ']' or s[i] == '}':
s1+=')'
else:
s1+=s[i]
while(index < len(s1) and valid):
if s1[index] == '(':
stack.push(s1[index])
else:
if stack.isEmpty():
valid = False
else:
stack.pop()
index += 1
if stack.isEmpty():
return valid
else:
return not valid