算法训练第十天
232. 用栈实现队列
代码:
class MyQueue(object):def __init__(self):self.arr1 = []self.arr2 = []def push(self, x):""":type x: int:rtype: None"""self.arr1.append(x)def pop(self):""":rtype: int"""if len(self.arr2)>0:return self.arr2.pop()while len(self.arr1)>0:self.arr2.append(self.arr1.pop())return self.arr2.pop()def peek(self):""":rtype: int"""if len(self.arr2)>0:return self.arr2[len(self.arr2)-1]while len(self.arr1)>0:self.arr2.append(self.arr1.pop())return self.arr2[len(self.arr2)-1]def empty(self):""":rtype: bool"""if len(self.arr1)==0 and len(self.arr2)==0:return Truereturn False# Your MyQueue object will be instantiated and called as such:
# obj = MyQueue()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.peek()
# param_4 = obj.empty()
225.用队列实现栈
代码:
class MyStack(object):def __init__(self):self.arr = []self.i = -1def push(self, x):""":type x: int:rtype: None"""self.arr.append(x)self.i+=1def pop(self):""":rtype: int"""while self.i>0:self.arr.append(self.arr.pop(0))self.i-=1t = self.arr.pop(0)if len(self.arr)==0:self.i=-1else:self.i = len(self.arr)-1return tdef top(self):""":rtype: int"""return self.arr[self.i]def empty(self):""":rtype: bool"""if len(self.arr)==0:return Truereturn False
20. 有效的括号
代码:
class Solution(object):def isValid(self, s):""":type s: str:rtype: bool"""str = list(s)stack = []for i in str:if len(stack)==0:stack.append(i)else:if i==')' and stack[len(stack)-1]== '(':stack.pop()elif i== '}'and stack[len(stack)-1]=='{':stack.pop()elif i== ']'and stack[len(stack)-1]=='[':stack.pop()else:stack.append(i)if len(stack)==0:return Truereturn False
1047. 删除字符串中的所有相邻重复项
代码:
class Solution(object):def removeDuplicates(self, s):""":type s: str:rtype: str"""my_list = []is_delete=Truestr = list(s)while is_delete:is_delete=Falsefor i in str:if len(my_list)==0:my_list.append(i)else:if i==my_list[len(my_list)-1]:my_list.pop()is_delete=Truecontinueelse:my_list.append(i)str = my_listmy_list=[]return ''.join(str)