Задание. Палиндром – это слово, фраза, число или другая последовательность символов, которая одинаково читается вперед и назад. Можете ли вы определить, является ли данная строка s палиндромом?

Чтобы решить эту задачу, мы должны сначала взять каждый символ из , поставить его в очередь, а затем поместить этот же символ в стек. Как только это будет сделано, мы должны удалить первый символ из очереди и вытолкнуть верхний символ из стека, а затем сравнить два символа, чтобы увидеть, одинаковы ли они; пока символы совпадают, мы продолжаем удалять из очереди, извлекать и сравнивать каждый символ, пока наши контейнеры не опустеют (несоответствие означает, что s не является палиндромом).

Напишите следующие объявления и реализации:

  1. Две переменные экземпляра: одна для вашего стека и одна для вашей очереди.
  2. Метод void pushCharacter(char ch), который помещает символ в стек.
  3. Метод void enqueueCharacter(char ch), который ставит в очередь символ в переменной экземпляра queue.
  4. Метод char popCharacter(), который извлекает и возвращает символ в верхней части переменной экземпляра стека.
  5. Метод char dequeueCharacter(), который удаляет из очереди и возвращает первый символ в переменной экземпляра queue.

В сегодняшнем сложном задании мы узнаем о стеках и очередях. В стеках используется метод «первым пришел — последним обслужен» (LIFO), а в очередях — «первым пришел — первым обслужен» (FIFO).

Когда я начал реализовывать класс Solution, я заметил, что нет никаких дополнительных ограничений. Если мы хотим, мы можем реализовать Stack и Queue как два разных класса, а затем использовать их в классе решения. Для этой задачи я использовал простые структуры списка. Если вы будете следовать инструкциям Python3, никакой дополнительной работы не потребуется. Вы можете увидеть мое решение ниже:

class Solution:
    def __init__(self):
        self.stack = []
        self.queue = []
    def pushCharacter(self, ch: str):
        self.stack.append(ch)
    def enqueueCharacter(self, ch):
        self.queue.append(ch)
    def popCharacter(self):
        return self.stack.pop()
    def dequeueCharacter(self):
        return self.queue.pop(0)

Если у вас есть какие-либо комментарии, не стесняйтесь оставлять их!

Удачного кодирования ~