Удалить из строки пробелы и определить, является ли она перевертышем

Вводится строка. Удалить из нее все пробелы. После этого определить, является ли она палиндромом (перевертышем), т.е. одинаково пишется как с начала, так и с конца.

Задача состоит из двух подзадач: 1) удаление всех пробелов из строки и 2) проверка строки на "палиндромность".

Для удаления пробелов надо перебрать по символам строку. Если очередной символ пробел, то удалить его. При этом следующий символ окажется на месте текущего, а значит не следует увеличивать значение счетчика. Если очередной символ не пробел, то надо перейти к проверке следующего, т.е. увеличить значение счетчика.

Для проверки, является ли строка палиндромом, надо сравнить первую и вторую половины строк. При этом половинки сравниваются так, что первый символ сравнивается с последним, второй - с предпоследним, третий - с третьим с конца, и т. д. То есть если длина строки l, а символ первой половины i, то символ второй половины имеет индекс l-i+1.

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

Здесь при заполнении строки как массива символов исключаются пробелы.

s = input()
s = s.split()
s_ = ''
for i in s:
    s_ += i
print(s_)
 
l = len(s_)
i = 0
f = 1
while i < l//2:
    if s_[i] != s_[-1-i]:
        print('Не палиндром')
        f = 0
        break
    i += 1
if f == 1:
    print('Палиндром')

Для того, чтобы убрать из строки пробелы, она сначала преобразуется в список слов с помощью метода split(), который разделяет строку по пробелам. После этого собирается новая строка из элементов списка.

При проверке строки, является ли она палиндромом, используется индексация не только с начала, но и с конца.

алг палиндром
нач
  лит 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 то
    вывод "Палиндром"
  все
кон
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() разбивает строку на подстроки по указанному разделителю. При этом создается массив, состоящий из подстрок.