day_10_栈与队列part01

232. 用栈实现队列

class MyQueue:
    def __init__(self):
        self.stack_in = []
        self.stack_out = []

    def push(self, x: int) -> None:
        self.stack_in.append(x)

    def pop(self) -> int:
        if self.empty():
            return None
        if not self.stack_out:
            while(self.stack_in):
                self.stack_out.append(self.stack_in.pop())
        return self.stack_out.pop()

    def peek(self) -> int:
        tmp = self.pop()
        self.stack_out.append(tmp)
        return tmp

    def empty(self) -> bool:
        if self.stack_in or self.stack_out:
            return False
        return True

不太难,但是不太熟。

225. 用队列实现栈

class MyStack:
    def __init__(self):
        self.que = deque()

    def push(self, x: int) -> None:
        self.que.append(x)

    def pop(self) -> int:
        if self.empty():
            return None
        for i in range(len(self.que) - 1):
            self.que.append(self.que.popleft())
        return self.que.popleft()


    def top(self) -> int:
        if self.empty():
            return None
        for i in range(len(self.que) - 1):
            self.que.append(self.que.popleft())
        tmp = self.que.popleft()
        self.que.append(tmp)
        return tmp


    def empty(self) -> bool:
        return not self.que

队列操作同样不熟,知道了双端队列deque(),同时知道了popleft()操作。另外,把前面的循环弹出,插到队尾,来实现栈的弹出,也是挺妙的。

20. 有效的括号

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        for i in s:
            if i == '(':
                stack.append(')')
            elif i == '[':
                stack.append(']')
            elif i == '{':
                stack.append('}')
            elif stack:
                c = stack.pop()
                if c != i:
                    return False
            else:
                return False
        if stack:
            return False
        return True

把对应的放进去,而不是自己放进去,然后看新来的是不是一样的,挺有意思哦。

1047. 删除字符串中的所有相邻重复项

class Solution:
    def removeDuplicates(self, s: str) -> str:
        out = []
        for i in s:
            if not out or i != out[-1]:
                out.append(i)
            else:
                out.pop()
        return ''.join(out)

这题自己做出来的,耶~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值