Имеется строка, состоящая из заглавных слов латиницы и пробелов, с длиной не более 255...

0 голосов
72 просмотров

Имеется строка, состоящая из заглавных слов латиницы и пробелов, с длиной не более 255 символов. Словом Петя Торопыжкин называет последовательность букв, ограниченную пробелами, началом или концом строки. Пара соседних слов разделена хотя бы одним пробелом. В строке имеется хотя бы одно двухбуквенное слово. Петя Торопыжкин решил выяснить, какое двухбуквенное сочетание подряд идущих букв одного слова является наиболее частым в этом тексте. Помогите ему, напишите программу, которая будет находить требуемую информацию.
Исходные данные
В единственной строке задан текст, удовлетворяющий указанным условиям. Длина текста не превосходит 255 символов.
Результат
Выведите единственное двухбуквенное слово, представляющее сочетание букв, наиболее частое в данном тексте. Если таких сочетаний несколько выдайте то, которое больше в лексикографическом порядке. (Сравнение строк в лексикографическом порядке подразумевает поиск первой пары несовпадающих символов, стоящих в строках на соответствующих позициях, которые и определяют порядок строк; если одна строка является началом другой, то она считается меньшей.)


Информатика (98 баллов) | 72 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString;
  var c:=s.ToWords.Where(t->t.Length>1).SelectMany(w->w.Pairwise)
      .Select(t->t[0]+t[1]).GroupBy(t->t).Select(t->(t.Key,t.Count))
      .OrderByDescending(t->t[1]).ThenByDescending(t->t[0]).First[0];
  Writeln('Чаще других встречается цепочка "',c,'"')
end.

Пример
TWAS BRILLIG AND THE SLITHY TOVES DID GYRE AND GIMBLE IN THE WABE ALL MIMSY WERE THE BOROGOVES AND THE MOME RATHS OUTGRABE
Чаще других встречается цепочка "TH"

Замечание: ограничение на длину строки увеличено до 2 млн. символов.
(150k баллов)