Считаем кораблики(#1028) Лошадью ходи!(#1030)

#1029

Задача g6_1029: Палиндромы

Дана последовательность символов s1, s2, ..., sn, 1 <= n <= 200, si либо является пробелом, либо принадлежит множеству {A,B,...,Z,a,b,...,z}. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Палиндромом назовем такое слово s1, s2, ..., sk, что s1 = sk, s2 = sk-1, s3 = sk-2, ..., k <= 30, при этом учитывается регистр символов, т.е. A <> a.
Найти количество символов, содержащихся в самом длинном палиндроме.

Формат входных данных
Входной файл INPUT.TXT содержит в первой строке целое число n. Во второй строке идет последовательность символов s1, s2, ..., sn.

Пример:
asDFr rtYUUYtr KLOPF vccv

Формат выходных данных
Выходной файл OUTPUT.TXT должен содержать количество символов, содержащихся в самом длинном палиндроме, если исходная последовательность не содержит ни одного палиндрома, файл должен содержать цифру 0 (нуль).

Пример:
8

Решение g6_1029:
Опять простая задача :(
Инициализируем максимальную длину палиндрома нулем. Читаем символ, если он не пробел, то добавляем к строке, если пробел - проверяем является ли строка палиндромом, а затем обнуляем эту строку.
Как проверять, является ли строка палиндромом? Очень просто. Заводим цикл от 1 до половины длины строки. Проверяем, если S[k] <> S[length(S)+1-k] - тогда строка не палиндром. Если строка оказалась палиндромом, то проверяем, если length(S) > max(максимальное кол-во букв в палиндроме), то max := length(S).
В конце просто выводим max (если палиндромов не было, то max = 0, так мы его инициализировали).

Наверх