Условие Палиндром - это слово, фраза или последовательность символов, которая читается одинаково как с начала, так и с конца (например, "ротор" или "мадам"). Вам нужно написать программу, которая определит, можно ли из заданной строки сделать палиндром путем перестановки ее символов. Входные данные Строка, состоящая из букв латинского алфавита (от a до z). Выходные данные Вывести строку 'YES', если можно переставить символы так, чтобы получить палиндром, и 'NO' в противном случае. Контрольный пример Вход: "aab" Выход: "YES" (можно сделать "aba") Вход: "abc" Выход: "NO" Вход: "racecar" Выход: "YES" (это уже палиндром) Вход: "aaa" Выход: "YES" Критерий оценивания Любой язык программирования. В соревновании победит самое короткое по символам решение (пробелы и переносы - тоже символы). Ответ победителя будет отмечен верным. Ответ автора вопроса не будет фигурировать при выборе победителя. Срок соревнования - 7 дней, конец 10.10.2023 в 8:00 по МСК
P.S. Просьба указывать язык в заголовке ответа и количество символов программы через запятую. Таблица лидеров (код формы результатов взял отсюда)
Результаты и объявление победителей: В начале хочется выразить огромные благодарности всем участникам данного соревнования за боевой дух и креативность! Представленные решения вызывают восторг и восхищение. Особая благодарность @Зонтик за вовлеченность в модерацию и редактуру ответов. 1 место: @Stanislav Volodarskiy, Ruby, 56 символов! 2 место: @Чёткая Четырка, Python, 57 символов! 3 место: @Алексей Р, Python, 63 символа! Всем спасибо за участие!
Ответ Python, 60 b=0 for c in input():b^=1<<ord(c) print('YNEOS'[b&b-1>0::2]) Целая переменная b хранит чётность количества символов. Например для 'a' чётность хранится в девяносто седьмом бите, для 'z' в сто двадцать втором бите. В конце проверяется что в b установлен только один бит. Выражение b & (b - 1) стирает младший бит числа. Если число обнулилось, этот бит был единственным. Константы 'YES' и 'NO' смешаны в одну строку. Первая на чётных позициях, вторая на нечётных.