Определить, сколько есть подстрок четной длины у строки S, которые являются палиндромами - Free Pascal
Формулировка задачи:
Объясните пожалуйста как решается на PASCAL ?
У Евгения есть строка S.
Он хочет узнать сколько есть подстрок четной длины у строки S, которые являются палиндромами.
Одинаковые подстроки начинающиеся с разных позиций считаются разными.
Вход-выход
abbaabaa-4
комментарии
-ab->aa<-baa
-abaab->aa<-
-ab->aab<-aa
-->abaaba<-a
Решение задачи: «Определить, сколько есть подстрок четной длины у строки S, которые являются палиндромами»
textual
Листинг программы
var s:string; i,j,sum:integer; function pal(x:string):boolean; var i:integer; flag:boolean; begin i:=1;flag:=true; while (i<=length(x) div 2)and(flag) do begin if x[i]<>x[length(x)-i+1] then flag:=false; inc(i) end; pal:=flag end; begin writeln('введите строку'); readln(s); writeln('**************'); sum:=0; for i:=1 to length(s)-1 do begin j:=2; while j<=length(s)-i+1 do begin inc(sum,ord(pal(copy(s,i,j)))); if pal(copy(s,i,j)) then writeln(copy(s,i,j)); inc(j,2) end end; write('количество подстрок, палиндромов четной длины = ',sum); end.
Объяснение кода листинга программы
В этом коде определен тип данных и переменные:
- Тип данных: string
- Переменная: s
- Тип данных: integer
- Переменные: i, j, sum
- Функция: pal(x:string):boolean
- Внутри функции объявлены переменные: i, flag
- Вывод сообщения для ввода строки
- Ввод строки в переменную s
- Вывод сообщения **
- Инициализация переменной sum = 0
- В цикле перебираются символы строки s
- Внутри цикла определяется переменная j
- В цикле перебираются подстроки строки s
- Внутри цикла проверяется, является ли подстрока палиндромом с помощью функции pal
- Если подстрока является палиндромом, то она выводится на экран и увеличивается значение переменной sum
- Значение переменной sum выводится на экран
- Код завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д