代码随想录算法训练营第9天|232, 225(重做), 20,1

2025-08-15  本文已影响0人  攻城狮科学家
  1. 用栈实现队列
    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 self.stack_out:
        return self.stack_out.pop()
    else:
        for i in range(len(self.stack_in)):
            self.stack_out.append(self.stack_in.pop())
        return self.stack_out.pop()

def peek(self) -> int:
    ans = self.pop()
    self.stack_out.append(ans)
    return ans
    
def empty(self) -> bool:
    return not (self.stack_in or self.stack_out)
  1. 用队列实现栈
    需要重做。看不太懂

  2. 括号匹配
    class Solution:
    def isValid(self, s: str) -> bool:
    stack = []

    for item in s:
        if item == '(':
            stack.append(')')
        elif item == '[':
            stack.append(']')
        elif item == '{':
            stack.append('}')
        elif not stack or stack[-1] != item:
            return False
        else:
            stack.pop()
    
    return True if not stack else False
    

1047.删除字符串中的所有相邻重复项
class Solution:
def removeDuplicates(self, s: str) -> str:
res = list()

    for item in s:
        if res and res[-1] = item:
            res.pop()
        else:
            res.append(item)
    
    return "".join(res)
上一篇 下一篇

猜你喜欢

热点阅读