Задача
Палиндромом называют строку, читающуюся одинаково с обеих сторон. Задана строка [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
