假设称正读和反读都相同的字符序列为“回文”,例如, ‘abba’和'abcba’是回文,‘abcde’和'abababb'则不是回文,试写一个算法判别读入的一个以“@”为结束符的字符序列是否是“回文”用c语言
时间: 2024-10-29 15:18:30 浏览: 34
在C语言中,我们可以使用双指针技术来判断一个字符序列是否是回文。以下是简单的步骤:
1. 定义两个指针,一个从字符串开始(i = 0),另一个从字符串结尾开始(j = strlen(str) - 1)。
2. 当i < j时,依次比较str[i]和str[j],如果它们相等,则向中间移动指针(i++,j--)。如果不相等,则说明不是回文,返回false。
3. 如果循环结束后所有的字符都匹配,那么就说明是回文,返回true。
下面是一个具体的C语言函数实现示例:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int i = 0;
int j = strlen(str) - 1;
while (i < j) {
if (str[i] != str[j]) {
return 0; // 回文不成立,立即返回 false
}
i++;
j--;
}
return 1; // 所有字符都匹配,是回文,返回 true
}
int main() {
char input[100];
fgets(input, sizeof(input), stdin); // 输入以 @ 结束的字符序列
// 去掉换行符
input[strlen(input) - 1] = '\0';
if (isPalindrome(input)) {
printf("输入的字符串是回文。\n");
} else {
printf("输入的字符串不是回文。\n");
}
return 0;
}
```
阅读全文