Определить, можно ли переставить английские буквы заданного предложения, чтобы получить палиндром - PascalABC.NET
Формулировка задачи:
На вход программе подается предложение на английском языке,
заканчивающееся точкой. Требуется написать программу, которая определяет, можно ли переставить
английские буквы этого предложения (не учитывая остальные символы) так, чтобы получить
палиндром – слово, которое читается одинаково слева направо и справа налево. Строчные и
прописные буквы не различаются. Если это сделать нельзя, программа должна вывести на экран слово
«Нет», а если можно – слово «Да» и в следующей строчке искомое слово прописными буквами. Если
таких слов несколько, нужно вывести последнее в алфавитном порядке слово. Например, если
исходная последовательность была такая
Deed daad N.
то результат должен быть следующий:
Да
EDDANADDE
Решение задачи: «Определить, можно ли переставить английские буквы заданного предложения, чтобы получить палиндром»
textual
Листинг программы
begin var gletters := ReadLnString().ToUpper().Where(ch -> ch in ['A' .. 'Z']).GroupBy(ch -> ch); var odds := gletters.Where(x -> Odd(x.Count())); if odds.Count() > 1 then Writeln('Нет') else begin Writeln('Да'); var evens := gletters.Where(x -> not Odd(x.Count())).OrderBy(x -> x.Key); var st : string := StringOfChar(odds.First().Key, odds.First().Count()); foreach var L in evens do st := Format('{0}{1}{0}', StringOfChar(L.Key, L.Count() div 2), st); writeln(st); end; end.
Объяснение кода листинга программы
- Сначала программа запрашивает у пользователя ввод строки и сохраняет ее в переменной
gletters
. - Затем она преобразует все символы в верхний регистр и удаляет все символы, которые не являются буквами английского алфавита.
- Далее она группирует оставшиеся буквы по их значениям.
- Следующий шаг - определение количества букв с нечетным количеством в каждой группе.
- Если есть группы с нечетным количеством букв, программа выводит
Нет
. - Если все группы имеют четное количество букв, программа выводит
Да
. - Затем она сортирует группы с четным количеством букв по их ключам (то есть по буквам).
- Она создает строку, используя первую букву и количество букв в первой группе с нечетным количеством.
- Затем она добавляет к этой строке буквы из каждой группы с четным количеством, используя половину количества букв в каждой группе.
- Наконец, она выводит полученную строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д