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
不太难,但是不太熟。
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()
操作。另外,把前面的循环弹出,插到队尾,来实现栈的弹出,也是挺妙的。
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
把对应的放进去,而不是自己放进去,然后看新来的是不是一样的,挺有意思哦。
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)
这题自己做出来的,耶~