Вводится строка. Удалить из нее все пробелы. После этого определить, является ли она палиндромом (перевертышем), т.е. одинаково пишется как с начала, так и с конца.
Задача состоит из двух подзадач: 1) удаление всех пробелов из строки и 2) проверка строки на «палиндромность».
Для удаления пробелов надо перебрать по символам строку. Если очередной символ пробел, то удалить его. При этом следующий символ окажется на месте текущего, а значит не следует увеличивать значение счетчика. Если очередной символ не пробел, то надо перейти к проверке следующего, т.е. увеличить значение счетчика.
Для проверки, является ли строка палиндромом, надо сравнить первую и вторую половины строк. При этом половинки сравниваются так, что первый символ сравнивается с последним, второй — с предпоследним, третий — с третьим с конца, и т. д. То есть если длина строки l, а символ первой половины i, то символ второй половины имеет индекс l-i+1.
Pascal
var
s: string;
i,l: byte;
begin
readln(s);
l := length(s);
if l < 2 then exit;
i := 1;
while i <= l do begin
if s[i] = ' ' then begin
delete(s,i,1);
l := l - 1;
end
else
i := i + 1;
end;
writeln(s);
if l < 2 then exit;
for i:=1 to l div 2 do
if s[i] <> s[l-i+1] then begin
writeln('это не палиндром');
exit;
end;
writeln('это палиндром');
end.
ракушка лежит на песке .. .
ракушкалежитнапеске...
это не палиндром
o nee no
oneeno
это палиндром
Язык Си
#include < stdio.h>
#include < string.h>
#define N 100
main() {
char str[N];
int i, f;
i = 0;
while ((str[i] = getchar()) != '\n')
if (str[i] != ' ') i +=1;
str[i] = '\0';
printf("%s\n",str);
f = 1;
for (i=0; i < strlen(str); i++)
if (str[i] != str[strlen(str)-1-i]) {
printf("No\n");
f = 0;
break;
}
if (f == 1) printf("Yes\n");
}
90 w ! w 0 9
90w!w09
Yes
Здесь при заполнении строки как массива символов исключаются пробелы.
Python
# Вариант 1 - без использования строковых методов
s_with_spaces = input()
s = ''
for i in s_with_spaces:
if i != ' ':
s += i
print(s)
s_len = len(s)
i = 0
f = 1
while i < s_len // 2:
if s[i] != s[-1-i]:
print('Не палиндром')
f = 0
break
i += 1
if f == 1:
print('Палиндром')
# Вариант 2
s = input()
s = s.split()
s = ''.join(s)
print(s)
if s == s[::-1]:
print("Палиндром")
else:
print("Не палиндром")
КуМир
алг палиндром
нач
лит s
цел i, l, f
ввод s
l := длин(s)
нц пока s[l] = " "
l := l-1
s := s[1:l]
кц
i := 1
нц пока i <= l
если s[i] = " " то
s := s[1:i-1] + s[i+1:l]
l := l - 1
иначе
i := i + 1
все
кц
вывод s, нс
f := 1
нц для i от 1 до div(l,2)
если s[i] <> s[l-i+1] то
вывод "Это не палиндром"
f := 0
выход
все
кц
если f = 1 то
вывод "Палиндром"
все
кон
Basic-256
input str$
arr$ = explode(str$," ")
str$ = ""
for i=0 to arr$[?] - 1
str$ = str$ + arr$[i]
next i
print str$
l = length(str$)
for i=1 to l\2
if mid(str$,i,1) <> mid(str$,l-i+1,1) then
print "no"
end
endif
next i
print "yes"
898 9 8
89898
yes
Функция explode() разбивает строку на подстроки по указанному разделителю. При этом создается массив, состоящий из подстрок.