栈用python来定义如下:
class Stack(object):
def __init__(self):
self.ls = []
def pop(self):
return self.ls.pop()
def top(self):
# 注意这个地方要加长度判断,否则会溢出
if self.ls:
return self.ls[-1]
else:
return None
def push(self, data):
self.ls.append(data)
def __str__(self):
return "".join(self.ls)
相关面试题
(1)有六个括号符号“{”、“}”、“[”、“]”、“(”、“)”任意组合的字符串输入,如何判断括号是成对匹配顺序正确的
def isPairBracket(str):
check_dist = {
"{": "}",
"(": ")",
"[": "]",
}
leftStack = Stack()
for i in str:
if i in ["{", "(", "["]:
leftStack.push(i)
elif i in ["}", ")", "]"] and len(leftStack.ls) > 0:
if i == check_dist.get(leftStack.top()):
leftStack.pop()
else:
return False
if len(leftStack.ls) == 0:
return True
else:
return False
if __name__ == "__main__":
str = "{{[]}())"
print(isPairBracket(str))
(2)用两个栈模拟队列
class Queue(object):
def __init__(self):
self._stack1 = Stack()
self._stack2 = Stack()
def appendTail(self, data):
self._stack1.push(data)
def deleteHead(self):
print(type(self._stack1))
if self._stack2.top():
return self._stack2.pop()
else:
if self._stack1.top():
while self._stack1.top():
self._stack2.push(self._stack1.pop())
return self._stack2.pop()
else:
return None