Проверить, является ли заданная строка палиндромом - C (СИ)
Формулировка задачи:
Проверить, является ли данная строка палиндромом. Пробелами и прописными буквами пренебрегать (напр., строка «А роза упала на лапу Азора» является палиндромом).
Решение задачи: «Проверить, является ли заданная строка палиндромом»
textual
Листинг программы
char *prep = " .,;-!?";
for(i=0, j=strlen(s)-1; i<j; i++, j--) {
if (strchr(s[i], prep)!=NULL) { j++; continue; }
if (strchr(s[j], prep!=NULL) { i--; continue; }
if (toupper(s[i]!=toupper(s[j]) break;
}
if (i<j) printf("Palindrom!\n");
else printf("No\n";
}
Объяснение кода листинга программы
- Объявляется указатель на строку
prepи инициализируется строкой.,;-!?. - В цикле сравниваются символы строки
sс помощью индексовiиj. - Если символ
s[i]содержит в себе любой из символов строкиprep(то есть, являетсянечеткимпалиндромом), то индексjувеличивается на единицу и условие цикла проверяется снова. - Если символ
s[j]содержит в себе любой из символов строкиprep(то есть, являетсянечеткимпалиндромом), то индексiуменьшается на единицу и условие цикла проверяется снова. - Если символ
s[i]не равен символуs[j]после приведения их к верхнему регистру, то условие цикла прерывается. - Если цикл был прерван, то выводится сообщение
No. - Если цикл был выполнен полностью, то выводится сообщение
Palindrom.