Определить, можно ли переставить английские буквы заданного предложения, чтобы получить палиндром - 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.

Объяснение кода листинга программы

  1. Сначала программа запрашивает у пользователя ввод строки и сохраняет ее в переменной gletters.
  2. Затем она преобразует все символы в верхний регистр и удаляет все символы, которые не являются буквами английского алфавита.
  3. Далее она группирует оставшиеся буквы по их значениям.
  4. Следующий шаг - определение количества букв с нечетным количеством в каждой группе.
  5. Если есть группы с нечетным количеством букв, программа выводит Нет.
  6. Если все группы имеют четное количество букв, программа выводит Да.
  7. Затем она сортирует группы с четным количеством букв по их ключам (то есть по буквам).
  8. Она создает строку, используя первую букву и количество букв в первой группе с нечетным количеством.
  9. Затем она добавляет к этой строке буквы из каждой группы с четным количеством, используя половину количества букв в каждой группе.
  10. Наконец, она выводит полученную строку.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы