Python программа для проверки, является ли строка палиндромом (6 методов)
Last updated
Last updated
Как проверить, является ли строка палиндромом в Python
В этом руководстве вы узнаете, как использовать Python для проверки, является ли строка палиндромом. Вы изучите шесть различных способов проверки, включая использование индексации строк, циклов for и функции reversed()
. Вы также узнаете об ограничениях различных подходов и о том, когда один способ может быть лучше другого. Но прежде чем мы углубимся в детали, давайте ответим на быстрый вопрос:
Палиндром — это слово, фраза или последовательность, которая читается одинаково как вперед, так и назад.
Индексация строк предоставляет самый простой способ в Python для проверки, является ли строка палиндромом. Индексация строк может использоваться для перебора строки в обратном порядке.
Одна из лучших особенностей индексации в Python заключается в том, что вы также можете установить счетчик шагов, что означает возможность перемещаться по итерируемому объекту с желаемой скоростью. Мы будем использовать шаг -1
, что означает перемещение по итерируемому объекту от конца к началу.
Важно помнить, что в вашей строке могут быть символы разного регистра, а также пробелы. Из-за этого нам нужно предварительно обработать нашу строку, чтобы удалить заглавные буквы и пробелы.
Давайте посмотрим, как использовать индексацию строк для проверки палиндрома в Python:
Давайте разберем, что мы сделали в коде выше:
Мы определяем функцию palindrome()
, которая принимает одну строку как единственный параметр
Затем мы переназначаем строку самой себе, но приводим все символы к нижнему регистру (используя метод .lower(
)) и удаляем все пробелы (используя метод .replace()
)
Затем мы проверяем, равна ли измененная строка измененной строке в обратном порядке
Это возвращает True, если строка является палиндромом, и False, если нет
Теперь давайте посмотрим, как мы можем использовать функцию Python reversed()
для проверки палиндрома.
Python поставляется со встроенной функцией reversed()
, которая переворачивает итерируемый элемент, такой как строка. Вы можете передать какой-либо итерируемый элемент, будь то строка, список или что-то другое упорядоченное, и функция вернет его перевернутую версию.
Давайте посмотрим, как мы можем использовать функцию reversed()
:
Давайте посмотрим, что делает наша функция:
Аналогично предыдущему методу, функция сначала изменяет все символы на нижний регистр и удаляет все пробелы
Затем она использует функцию reverse()
для переворачивания строки
Поскольку функция reverse()
возвращает объект reversed, нам нужно преобразовать его обратно в строку. Это можно сделать с помощью метода .join()
Наконец, две строки сравниваются на равенство
В следующем разделе вы узнаете, как использовать цикл for
для проверки палиндрома.
Вы также можете использовать цикл for
в Python для перебора строки в обратном порядке, чтобы проверить, является ли строка палиндромом.
Давайте посмотрим, как мы можем использовать цикл for
для проверки палиндрома:
Здесь мы прошли по списку от последнего индекса, -1
, до первого, 0
. Затем мы присваиваем это значение строке reversed. Наконец, мы проверяем, равны ли две строки.
В следующем разделе вы узнаете, как использовать цикл while
в Python для проверки палиндрома.
В этом разделе давайте рассмотрим, как использовать цикл while в Python для проверки, является ли строка палиндромом.
Одно из преимуществ этого подхода заключается в том, что нам фактически не нужно переназначать перевернутую строку, что при больших строках не будет потреблять много памяти.
Давайте посмотрим, как мы можем использовать цикл while
в Python:
Давайте разберем, что делает код выше:
Мы определяем функцию palindrome()
, которая принимает строку как единственный аргумент
Мы форматируем нашу строку в нижнем регистре и заменяем все пробелы
Затем мы создаем две переменные, first
и last
, которые равны 0
и длине списка минус 1
соответственно
Затем мы создаем цикл while
, который работает до тех пор, пока значение first
меньше last
Цикл проверяет, равны ли индексированные значения first
и last
друг другу
Если они равны, значения увеличиваются и уменьшаются на 1
соответственно
Если нет, функция возвращает False
Значительное преимущество в производительности здесь может заключаться в том, что если строка явно не является палиндромом, например, если первый и последний символы не совпадают, то цикл прерывается. Это экономит нам значительную память и время.
В этом разделе вы узнаете, как использовать рекурсию для проверки палиндрома в Python. Рекурсивные функции можно использовать, чтобы сделать ваш код проще и чище, обеспечивая при этом широкую функциональность.
Давайте посмотрим, как мы можем разработать рекурсивную функцию, которая проверяет, является ли строка палиндромом:
Давайте разберем, что мы сделали в коде выше:
Мы определили функцию palindrome()
, которая принимает строку как единственный параметр
Функция сначала приводит строку к нижнему регистру и удаляет все пробелы
Затем она проверяет, одинаковы ли первый и последний символы
Если нет, то функция возвращает False
Если да, функция вызывается рекурсивно, игнорируя первую и последнюю буквы
В следующем разделе вы узнаете, как проверить, является ли число палиндромом.
Самый простой способ проверить, является ли число палиндромом в Python — это преобразовать число в строку и применить любой из упомянутых выше методов.
Давайте посмотрим, как мы можем сделать это с помощью метода индексации строк:
Чтобы проверить, является ли число палиндромом в Python, мы преобразовали число в строку с помощью метода str()
. После этого мы можем просто проверить, является ли получившаяся строка палиндромом, используя любой из методов выше. В примере кода мы использовали индексацию строк для переворачивания строки.
В коде выше вы изучили шесть различных способов использования Python для проверки палиндрома. В этот момент вы можете задаться вопросом, какой метод использовать. Во многих случаях вы будете стремиться к читаемости и скорости.
В этом разделе мы протестировали скорость различных методов, используя палиндром длиной более десяти миллионов символов. Поскольку рекурсия обычно ограничена 1000 рекурсивными вызовами, этот метод не тестировался.
Какой самый быстрый способ использования Python для проверки палиндрома? Самый быстрый способ проверить, является ли строка палиндромом, используя Python — это использовать индексацию строк, которая может быть до 70 раз быстрее, чем использование цикла for.
В этой статье вы узнали несколько различных способов проверки палиндрома в Python. Вы узнали, как делать это с помощью индексации строк Python, функции reversed()
, циклов for
и while
. Вы также узнали, как проверить, является ли число палиндромом в Python, и как искать в большей строке подстроку, являющуюся палиндромом.
Чтобы узнать больше о связанных темах, ознакомьтесь с руководствами ниже:
Чтобы узнать больше о функции reversed()
, ознакомьтесь с официальной документацией .