zoukankan      html  css  js  c++  java
  • Python实现栈

    
    

    栈的操作

    
    
    • Stack() 创建一个新的空栈
    • push(item) 添加一个新的元素item到栈顶
    • pop() 弹出栈顶元素
    • peek() 返回栈顶元素
    • is_empty() 判断栈是否为空
    • size() 返回栈的元素个数


    class
    Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items)-1] def size(self): return len(self.items)
    from pythonds.basic.stack import Stack
    
    s = Stack()
    
    print(s.isEmpty())
    s.push(4)
    s.push('dog')
    print(s.peek())
    s.push(True)
    print(s.size())
    print(s.isEmpty())
    s.push(8.4)
    print(s.pop())
    print(s.pop())
    print(s.size())

     用栈处理简单括号匹配问题

    from pythonds.basic.stack import Stack
    
    def parChecker(symbolString):
        s = Stack()
        balanced = True
        index = 0
        while index < len(symbolString) and balanced:
            symbol = symbolString[index]
            if symbol == "(":
                s.push(symbol)
            else:
                if s.isEmpty():
                    balanced = False
                else:
                    s.pop()
    
            index = index + 1
    
        if balanced and s.isEmpty():
            return True
        else:
            return False
    
    print(parChecker('((()))'))
    print(parChecker('(()'))

    多括号匹配问题

    from pythonds.basic.stack import Stack
    
    def parChecker(symbolString):
        s = Stack()
        balanced = True
        index = 0
        while index < len(symbolString) and balanced:
            symbol = symbolString[index]
            if symbol in "([{":
                s.push(symbol)
            else:
                if s.isEmpty():
                    balanced = False
                else:
                    top = s.pop()
                    if not matches(top,symbol):
                           balanced = False
            index = index + 1
        if balanced and s.isEmpty():
            return True
        else:
            return False
    
    def matches(open,close):
        opens = "([{"
        closers = ")]}"
        return opens.index(open) == closers.index(close)
    
    
    print(parChecker('{{([][])}()}'))
    print(parChecker('[{()]'))

     进制转换

    from pythonds.basic.stack import Stack
    
    def baseConverter(decNumber,base):
        digits = "0123456789ABCDEF"
    
        remstack = Stack()
    
        while decNumber > 0:
            rem = decNumber % base
            remstack.push(rem)
            decNumber = decNumber // base
    
        newString = ""
        while not remstack.isEmpty():
            newString = newString + digits[remstack.pop()]
    
        return newString
    
    print(baseConverter(25,2))
    print(baseConverter(25,16))
  • 相关阅读:
    phalapi框架where条件查询
    yii2学习网站
    改变yii2 $form最外层div样式
    PHP库(数据抓取)
    yii框架场景的用法
    Yii框架数据查询
    更改控制台编码格式
    打开yii2控制台命令
    过滤器实现登录拦截
    SSM整合
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7196584.html
Copyright © 2011-2022 走看看