Проверить ровный/нечетный на Палиндром?

Действительно ли это - хорошая идея проверить на нечетную/ровную длину числа/строки палиндрома? Большинство отрывков, с которыми я столкнулся, не делает этого базового теста. Если длина даже, это не может быть палиндром, нет?

if len(var) % 2 != 0:
  # could be a palindrome, continue...
else:
  break

Или это просто лучше (т.е. быстрее), чтобы начать сравнивать первые и последние числа/буквы непосредственно?

Править: Хорошо, глупый вопрос, должен был думать дважды! :)

5
задан 3zzy 19 January 2010 в 17:23
поделиться

6 ответов

ABBA - пример Palindrome из четырех букв, что означает даже длина.

A Palindrome - это слово, фраза, номер , или другая последовательность символов , которая читает то же самое обратное или вперед ...

23
ответ дан 12 December 2019 в 11:25
поделиться

Самый простой способ проверить на наличие палиндром - просто сравнить строку против реверса:

def ispalindrome(s):
   return s == s[::-1]

Это использует расширенные кусочки с отрицательным шагом, чтобы пройти назад через S и получить обратную связь.

10
ответ дан 12 December 2019 в 11:25
поделиться

Baab = palindrome и имеет длину 4, что даже

8
ответ дан 12 December 2019 в 11:25
поделиться

Самый простой способ проверить палиндром - просто сравнить последовательность с реверсом:

def ispalindrome(s):
   return s == s[::-1]

Это использует расширенные срезы с отрицательным шагом, чтобы пройти назад через s и получить реверс.

-121--4533737-

http://zargony.com/2009/07/24/ruby-1-9-and-file-encodings

Не путайте кодировку файлов и кодировку последовательности!

-121--1681451-

Простой случай: aa.

Более сложный случай: aaaa.

И так далее.

2
ответ дан 12 December 2019 в 11:25
поделиться

Вот несколько ссылок, которые могут помочь понять, почему он нуждается в имя типа ключевые слова для использования:

  1. блог Стэна Липпмана
  2. StackOverflow.com
  3. comeaucomputing

Похоже, что GCC 'делает это правильно'

-121--3612805-

Лучше всего оставить это на усмотрение упаковщика и предоставить оба параметра в сценариях настройки/создания. Обычно динамическое связывание имеет предпочтение, так как тогда было бы легко обновить библиотеки, когда это необходимо, т.е. когда обнаруживаются уязвимости безопасности и т.д.

Обратите внимание, что если у вас нет прав root для установки библиотек в системных каталогах, вы можете скомпилировать программу таким образом, чтобы она сначала искала любые необходимые динамические библиотеки в другом месте, это выполняется путем установки директивы runpath в двоичных файлах ELF. Такую папку можно указать с помощью опции -rpath компоновщика ld.

-121--2698847-

Четные строки длины также могут быть палиндромами. Википедия ничего не говорит об этом ограничении.

1
ответ дан 12 December 2019 в 11:25
поделиться

Попробуйте:

is_palindrome = lambda s : all(s1==s2 for s1,s2 in zip(s[:len(s)/2],s[-1:-(len(s)+1)/2:-1]))

проверяет только переднюю половину задней половиной, а также короткие схемы, как только не будет обнаружено несоответствие.

3
ответ дан 12 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: