判断一个字符序列是否为回文————利用使用双指针法
#include <stdio.h>
#include <string.h>
int is_palindrome(char s[]) {
int left = 0;
int right = strlen(s) - 1;
// 循环判断左右指针字符是否相等
while (left < right) {
// 如果左右指针所指字符不相等,则返回0表示不是回文
if (s[left] != s[right]) {
return 0;
}
// 移动左右指针继续判断下一对字符
left++;
right--;
}
// 如果全部字符都比较完毕,没有返回0,则说明是回文,返回1表示是回文
return 1;
}
int main() {
char input_str[1000]; // 假设输入的字符序列长度不超过1000
// 读入字符序列直到遇到'@'为止
printf("请输入一个字符序列以@为结束符:");
scanf("%[^@]s", input_str);
// 判断输入的字符序列是否为回文
int result = is_palindrome(input_str);
if (result) {
printf("是回文\n");
} else {
printf("不是回文\n");
}
return 0;
}