📅  最后修改于: 2023-12-03 15:10:16.330000             🧑  作者: Mango
问题 32 提供了一道编程题,要求编写一个程序来判断一个给定的字符串是否是回文字符串。回文字符串是指正着读和倒着读都一样的字符串。
程序需要从标准输入中读取一个字符串 s。
程序需要输出一个整数,表示字符串 s 是否是回文字符串。如果是回文字符串,则输出 1,否则输出 0。
输入:
racecar
输出:
1
判断一个字符串是否是回文字符串可以使用双指针法来实现。定义一个指针从字符串的开头开始,另一个指针从字符串的末尾开始,两个指针同时向中间移动,判断对应位置的字符是否相同,如果所有的字符都相同,则该字符串是回文字符串。
具体实现细节可以参考下面的代码:
#include <stdio.h>
#include <string.h>
int is_palindrome(char *s) {
int len = strlen(s);
int i = 0, j = len - 1;
while (i < j) {
if (s[i++] != s[j--]) {
return 0;
}
}
return 1;
}
int main() {
char s[1000];
scanf("%s", s);
if (is_palindrome(s)) {
printf("1\n");
} else {
printf("0\n");
}
return 0;
}
其中,is_palindrome 函数用来判断字符串是否是回文字符串,如果是返回 1,否则返回 0。在 main 函数中,先读取输入的字符串,然后调用 is_palindrome 函数进行判断,根据返回的结果输出对应的数字。