// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
begin
var s:=ReadlnString('>');
var s1:=s.Trim;
var a:=s1.ToWords.ToArray; // a - массив слов
// b - массив слов с хвостовыми пробелами
var q:=Regex.Matches(s1,'(\S+\s*)');
var b:array of string;
SetLength(b,q.Count);
var i:=0;
foreach var e in q do begin
b[i]:=e.ToString;
Inc(i)
end;
// частотный словарь для первого слова
var d:=new Dictionary;
foreach var e in a[0] do d[e]:=d.Get(e)+1;
// все повторяющиеся символы из словаря помещаем в массив dub
var dub:=d.Where(x->x.Value>1).Select(x->x.Key).ToArray;
if dub.Length=0 then Writeln('НЕТ')
else begin
var res:=b[0]; // начало выходной строки
i:=1;
while s[i]=' ' do begin res:=' '+res; Inc(i) end;
for i:=1 to a.Length-1 do begin
var found:=false;
foreach var e in dub do begin
found:=Pos(e,a[i])>0;
if found then break
end;
if found then b[i]:=' '*(b[i].Length-a[i].Length);
res+=b[i]
end;
i:=s.Length;
while s[i]=' 'do begin res+=' '; Dec(i) end;
Writeln(res)
end
end.
Тестовое решение:
> балабол - по данным словаря болтун, человек, который много говорит попусту
балабол - по который много говорит попусту