Как проверить слова на симметрию? - C (СИ)
Формулировка задачи:
Нужно написать функцию находящую в строке символов симметричное слово. Подскажите пож-та идею проверки на симметрию.
Решение задачи: «Как проверить слова на симметрию?»
textual
Листинг программы
#include <string.h>
int is_palindrome(const char * s) {
const char * t = s + strlen(s) - 1;
while ( s < t )
if ( *s++ != *t-- )
return 0;
return 1;
}
Объяснение кода листинга программы
В данном коде представлена функция is_palindrome, которая проверяет, является ли строка s палиндромом (словарем, одинаково читающимся как слева направо, так и справа налево).
Список действий, выполняемых в коде:
- Включаем заголовочный файл
string.h, который содержит определения функций работы со строками. - Определяем функцию
is_palindrome, принимающую на вход константный указательsна строку, которую необходимо проверить на палиндромность. - Выделяем память под новый указатель
t, который будет указывать на символ в строкеs, смещенный вправо от ее конца. - В цикле сравниваем текущие символы под указателями
sиt. Если они не равны, то возвращаем 0 и функция завершается. - Если все символы равны, то возвращаем 1.
Поскольку в коде используется оператор
return, то в списке действий можно выделить два случая: - Если функция завершается с возвратом значения 0, то список действий будет выглядеть следующим образом:
-
- Выделяем память под указатель
t.
- Выделяем память под указатель
-
- В цикле сравниваем символы под указателями
sиt.
- В цикле сравниваем символы под указателями
-
- Если символы не равны, то возвращаем 0.
-
- Если функция завершается с возвратом значения 1, то список действий будет выглядеть следующим образом:
-
- Выделяем память под указатель
t.
- Выделяем память под указатель
-
- В цикле сравниваем символы под указателями
sиt.
- В цикле сравниваем символы под указателями
-
- Если все символы равны, то возвращаем 1.
-