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

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

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

Оцените статью
Добавить комментарий