Определить, сколько есть подстрок четной длины у строки 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 выводится на экран
- Код завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д