Я пытаюсь объединить две очереди (эти две очереди предполагают, что они были отсортированы по алфавиту) в третью очередь и вернуть третью очередь в алфавитном порядке.Например:
queue1 = ["a","d","x"]
queue2 = ["b","c","y","z"]
# the third queue should look like
queue3 = ["a","b","c","d","x","y","z"]
Это мой код (я не использую метод merge()
):
import string
from pythonds.basic.stack import Stack
class Stack1Queue:
Stackone = Stack()
Stackto = Stack()
def __init__(self):
self.items = []
def add(self, element):
self.items.append(element)
def remove(self):
if len(Stackto) == 0:
if len(Stackone) == 0:
return None
while not Stackone.isEmpty():
p = Stackone.pop()
Stackto.push(p)
return Stackto.pop()
def peek(self):
return self.items[len(self.items) - 1]
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
class MergeQueue(Stack1Queue):
adict = dict(enumerate(string.ascii_lowercase))
Queuethr = Stack()
def merge(self, Stackone, Stackto):
while not Stackone.isEmpty() and Stackto.isEmpty():
for k, v in adict.items():
if Stackone.peek() == adict.get(v):
Queuethr.push(Stackone.peek())
else:
Queuethr.push(Stackto.peek())
print(dict(Queuethr))
return 1
В основном мой первый класс Stack1Queue
предназначен для реализации двухстек для создания очереди.В любом случае, мне просто интересно, правильно ли написана моя функция merge
или нет.Когда я пытаюсь запустить:
s = Stack1Queue()
p = Stack1Queue()
q = MergeQueue()
s.add("z")
s.add("y")
s.add("d")
s.add("b")
s.add("a")
p.add("x")
p.add("d")
p.add("c")
print(q.merge(s, p))
Возвращается 0 для размера q