Задача
Палиндромом называют строку, читающуюся одинаково с обеих сторон. Задана строка [latex]s[/latex]. Найдите её наибольшую по длине подстроку, не являющуюся палиндромом.
Входные данные
Входной файл содержит строку [latex]s[/latex]. Она состоит только из строчных букв латинского алфавита, не пуста, её длина не превышает 100000 символов.
Выходные данные
В выходной файл выведите ответ на задачу, если ответов несколько — выберите лексикографически минимальный. Если все подстроки s являются палиндромами, выведите в выходной файл NO SOLUTION.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | abba | abb |
2 | aaaaaaa | NO SOLUTION |
3 | abcghgcba | abcghgcb |
4 | abaaabbb | abaaabbb |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static boolean Function(String s) { for (int i = 1; i < s.length(); i++) { if (s.charAt(i) != s.charAt(0)) return false; } return true; } public static boolean palindrom(String s) { for (int i = 0; i < s.length()/2; i++) { if (s.charAt(i) != s.charAt(s.length() - i - 1)) return false; } return true; } public static void main (String[] args) throws java.lang.Exception { Scanner in=new Scanner(System.in); String s = in.nextLine(); if (Function(s)) System.out.println("NO SOLUTION"); else { if (!palindrom(s)) System.out.println(s); else { if (s.charAt(0) < s.charAt(1)) System.out.println(s.substring(0, s.length() - 1)); else System.out.println(s.substring(1)); } } } } |
Решение
- Проверка на строку, состоящую из одинаковых символов
- Проверка на палиндром
- Вывод в лексикографическом порядке
Ссылки
Задача на e-olymp
Код задачи на ideone