Задание. Палиндром – это слово, фраза, число или другая последовательность символов, которая одинаково читается вперед и назад. Можете ли вы определить, является ли данная строка s палиндромом?
Чтобы решить эту задачу, мы должны сначала взять каждый символ из , поставить его в очередь, а затем поместить этот же символ в стек. Как только это будет сделано, мы должны удалить первый символ из очереди и вытолкнуть верхний символ из стека, а затем сравнить два символа, чтобы увидеть, одинаковы ли они; пока символы совпадают, мы продолжаем удалять из очереди, извлекать и сравнивать каждый символ, пока наши контейнеры не опустеют (несоответствие означает, что s не является палиндромом).
Напишите следующие объявления и реализации:
- Две переменные экземпляра: одна для вашего стека и одна для вашей очереди.
- Метод void pushCharacter(char ch), который помещает символ в стек.
- Метод void enqueueCharacter(char ch), который ставит в очередь символ в переменной экземпляра queue.
- Метод char popCharacter(), который извлекает и возвращает символ в верхней части переменной экземпляра стека.
- Метод 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)
Если у вас есть какие-либо комментарии, не стесняйтесь оставлять их!
Удачного кодирования ~