e-olymp 331. Предложение — чемпион

Условие

Задан некоторый абзац текста на неизвестном языке. Назовем предложение чемпионом, если количество палиндромов в нем максимально. Если таких предложение несколько, то чемпионом является то предложение, которое встретилось первым. Буквами алфавита в неизвестном языке являются буквы латинского алфавита и арабские цифры. Гарантируется, что других символов, кроме пробелов и знаков препинания в предложениях нет.

Замечание

В процессе прохождения тестов на сайте e-olymp эмпирически было выяснено, что в случае отсутствия палиндромов во всех предложения, необходимо вывести ноль.

Тесты

Входные данные Номер предложения
No palindrom here. Here it is: abcba! Seriously, I just hate orks… 2
Some random text ahead: AaA o-O-o I. 1 22 333. Result will be 1. 1
Some random text ahead: AaA o-O-o I. 1 22 333 4444. Now result will be 2! 2
Some random text ahead: AaA o-O-o I. 1 — 22 — 333. Result will be 1. 1
No. Palindrom. at. ALL?! 0

Решение

Заведем переменную [latex]currentSentence[/latex], хранящую номер текущего предложения, будем считывать по слову и увеличивать ее значение на 1, если текущее слово заканчивается на точку, восклицательный или вопросительный знак. Далее, поочередно удаляем с конца лишние символы, заменяя их терминальным, пока не встретится первая буква. Затем переводим слово в нижний регистр и проверяем его на палиндромность, если да — увеличиваем на 1 переменную-счетчик кол-ва палиндромов в текущем предложении  [latex]palCount[/latex]. Если слово было последним в предложении (за это отвечает флаг [latex]endOfSentence[/latex]) — сравниваем предложение с предыдущим чемпионом, после обнуляем значение [latex]palCount[/latex].

Код

Ссылки

Рабочий код на Ideaone.

Засчитанное решение на E-olymp.

One thought on “e-olymp 331. Предложение — чемпион