Задача4. «Палиндром»Решение на паскале(делфи) без модуля maths только sys utils Палиндром - это строка, которая читается одинако
Задача4. «Палиндром» Решение на паскале(делфи) без модуля maths только sys utils Палиндром - это строка, которая читается одинаково как справа налево, так и слева направо. На входе записан набор больших латинских букв (не обязательно различных). Разрешается переставлять буквы, а также удалять некоторые буквы. Требуется написать программу, которая из данных букв по указанным правилам составит палиндром наибольшей длины, а если таких палиндромов несколько, то первый в алфавитном порядке. Формат входных данных В первой строке записано число N (1 <= N <= 100000). Во второй строке записана последовательность из N больших латинских букв (буквы записаны без пробелов). Формат выходных данных В единственной строке выдайте искомый палиндром. Примеры Вход Выход 3 AAB ABA 6 QAZQAZ AQZZQA 6 ABCDEF A
Var s,p1,p2:string; a:array['A'..'Z'] of byte; n,i,j,f:integer; c,sim:char; begin readln(n); readln(s); for c:='A' to 'Z' do a[c]:=0; for i:=1 to length(s) do a[s[i]]:=a[s[i]]+1; p1:=''; p2:=''; f:=0; for c:='A' to 'Z' do begin for j:=1 to a[c] div 2 do begin p1:=p1+c; p2:=c+p2; end; if (a[c] mod 2=1)and(f=0) then begin sim:=c; f:=1; end; end; if f=1 then p1:=p1+sim; p1:=p1+p2; writeln(p1); end.
Пример: 6 QAZQAZ <span>AQZZQA
PS. Программа проверялась только для коротких (String) строк. Для длинных нужно использовать </span><span>AnsiString.</span>