无法使用堆栈解决平衡括号

时间:2016-12-26 07:53:43

标签: python stack python-3.5

我正在尝试使用堆栈实现平衡括号操作,其中程序检查什么是输入符号,如果它是开放的Kind((,{,[)则将其推入堆栈,如果符号是关闭类型,所以它检查最后插入的元素,如果它们是相同的继续删除机制。这是相同的代码。

class Stack(object):
def __init__(self,limit=10):
    self.limit=limit
    self.stack=limit*[]

def isEmpty(self):
    if(len(self.stack))<=0:
        print("Stack is Empty")

def peek(self):
    if len(self.stack)<=0:
        print("Stack is Empty")
    else:
        return(self.stack[-1])

def Delete(self):

    if(len(self.stack)<=0):
        print("Stack is empty.Cannot Delete it More")
    else:
        deleted_var=self.stack.pop()
        #print('Deleted element is:',deleted_var)

def Insertion(self,item):
    if(len(self.stack)>self.limit):
        self.resize()
        self.stack.append(item)
    else:
        inserted_var=self.stack.append(item)
        #print("Element inserted is:",item)

def Size(self):
    print(len(self.stack))

def Display(self):
    print(self.stack[0:self.limit])

def resize(self):
    old_stack=list(self.stack)
    self.limit=2*self.limit
    self.stack=old_stack


user_input=list(input())

BStack=Stack(len(user_input))

character=0


for character in range(len(user_input)):

Inserted_element=None
Deleted_elem=None

if user_input[character]=='(' or user_input[character]=='{' or user_input[character]=='[':
    BStack.Insertion(user_input[character])
    Inserted_element=user_input[character]
    print(Inserted_element)


elif (user_input [character] ==')' or user_input[character]=='}' or user_input[character]==']') and BStack.isEmpty()!=True:
    Deleted_elem=BStack.peek()
    BStack.Delete()
    print(Deleted_elem)


if BStack.Size()>2:
    if Inserted_element!=Deleted_elem:
        print("Symbos are not same")

if BStack.isEmpty():
    print("Symbols Match")
else:
    print("No Match")

我也在学习本书中的数据结构 - 数据结构和Python的算法思维,由Narasimha karumanchi撰写。如果有人读过它,我想听听你的意见,如果有人有更好的书,请告诉我。

0 个答案:

没有答案