Палиндром — это строка, которая одинаково читается слева направо и справа налево. Составьте программу, которая проверяет, является ли заданный текст палиндромом. Не забудьте, что при чтении пробел никак не произносится.
Входные данные
Дана строка S (|S| ≤ 255), состоящая из строчных латинских букв и пробелов. Под |S| подразумевается длина строки.
Выходные данные
Требуется вывести «YES«, если текст является палиндромом, «NO» если не является.
Тесты
№ | Входные данные | Выходные данные |
1 | palindrom | NO |
2 | a roza upala na lapu azora | YES |
3 | my gym | YES |
4 | character | NO |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.Scanner; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); System.out.print(isPalindrome(s) ? "Yes" : "No"); } public static boolean isPalindrome(String text) { text = text.replaceAll(" ",""); return text.equals(new StringBuilder(text).reverse().toString()); } } |
Решение на Ideone
Решение на e-olymp
Алгоритм решения
В данной строке удаляем все пробелы, сравниваем полученную строку с новой строкой, которая содержит все символы данной строки, но в обратном порядке, возвращаем true если строки равны и false в противоположном случае.
— Приведенный в работе и на ideone.com код не проходит даже Ваши тесты — будьте внимательнее.
— Вы дважды удаляете пробелы в одной и той же строке — это двойная работа.
— Условный оператор использовать не логично, т.к. в любом случае производится вывод на печать. Лучше применить тернарную операцию.
— Проверила еще раз. На ideone и e-olymp проходит все тесты.
— Исправила.
— И это тоже.