Задача: По данной строке определите, является ли она палиндромом (то есть верно ли, что она одинаково читается слева направо и справа налево) Ввод На вход подается строка без пробелов. Длина строки не превышает 200. Буквы разного регистра считаются различными. Вывод Необходимо вывести yes, если строка является палиндромом, и no в противном случае. Пример: abba yes qwerq no
slovo = str(input()) x = len(slovo) i = 0 x = x — 1 k = 0 while x — i >= i: if slovo[x — i] == slovo[i]: i += 1 else: k = 1 break if k == 1: print(«no») else: print(«yes»)
Неправильный ответ на 6 тесте. Я и понятие не имею какое слово это может быть. Кто-то может придумает? UPD: Тесты — это проверка моего кода на сайте. Программа подставляет в мой код разные слова и проверяет правильность моего решения. 5 слов — правильно. 6 тест — нет.
Я не могу придумать такое слово и не знаю какое слово подставляла в этом тесте программа.
Источник: ru.stackoverflow.com
Решаем задачи с собеседований по JS. Палиндром
Является ли строка палиндром?
Палиндром – это число, слово или фраза, одинаково читающиеся в обоих направления.
Алгоритм решения задачи:
- Брать очередной символ с начала строки и сравнивать его с противоположным.
- Если символы не равны, то выдать сообщение «не палиндром», изменить значение флага и остановить сравнение.
Программа на языке Паскаль:
var s: string; f: boolean; len, i: byte; begin write(‘Строка: ‘); readln(s); len := length(s); f := True; for i := 1 to len div 2 do if s[i] <> s[len-i+1] then begin f := False; break; end; if f = True then writeln(‘Палиндром’) else writeln(‘Не палиндром’); end.
Строка: banana Не палиндром
Строка: banab Палиндром
Другой вариант решения задачи — перезаписать символы строки в обратном порядке в другую строку и сравнить строки. Если они окажутся равными, значит перед нами палиндром.
var s, s1: string; i: integer; begin readln(s); s1 := »; for i := length(s) downto 1 do s1 := s1 + s[i]; if s = s1 then writeln(‘Палиндром’) else writeln(‘Не палиндром’); end.
Источник: pas1.ru
Проверка: является ли строка палиндромом?
Условие задачи: Дана строка, необходимо написать функцию, которая проверит является ли строка палиндромом или нет. Палиндром – это число, слово или фраза, одинаково читающиеся в обоих направления.
Например слово ‘radar’ ‘радар’.
Метод 1:
Найдем обратную строку с помощью метода reverse, затем сравним обратную строку с исходной
# возвращает обратную строку def reverse(s): return s[::-1] def is_palindrome(s): rev = reverse(s) # проверка на совпадение 2х строк if (s == rev): return True return False # запуск кода s = «malayalam» ans = is_palindrome(s) >>>True
Метод 2: Итеративный метод. Начать цикл с length/2 и проверять первый и последний элемент, второй и предпоследний и т.д. Если хоть что-то не совпадает, следовательно это не полиндром.
Решение простых задач на python | Является ли строка палиндромной
def isPalindrome(str): # Run loop from 0 to len/2 for i in xrange(0, len(str)/2): if str[i] != str[len(str)-i-1]: return False return True s = «malayalam» ans = isPalindrome(s) >>> True
Метод 3: Использование встроеной функции для реверса строки.
Просто посмотрите код.
def isPalindrome(s): # Используем встроенную функцию rev = ».join(reversed(s)) # Проверяем строки на равенство if (s == rev): return True return False s = «malayalam» ans = isPalindrome(s) True
3 способа в вашу копилку питониста.
Если вы нашли ошибку в коде, пишите в комментариях.
Источник: pythonist.ru