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