回文是从前向后和从后向前读起来都一样的,请编写一个函数,判断一个字符串是否为回文C语言完整代码
时间: 2024-02-15 07:03:58 浏览: 19
当然可以!以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int is_palindrome(char *s) {
int len = strlen(s);
char str[len + 1];
int i, j, k = 0;
// 去除空格并转换为小写字母
for (i = 0; i < len; i++) {
if (isalpha(s[i])) {
str[k++] = tolower(s[i]);
}
}
str[k] = '\0';
// 判断是否为回文
for (i = 0, j = k - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0;
}
}
return 1;
}
int main() {
char string1[] = "A man a plan a canal Panama";
char string2[] = "Hello, world!";
printf("%d\n", is_palindrome(string1)); // 1
printf("%d\n", is_palindrome(string2)); // 0
return 0;
}
```
这个函数首先会将字符串去除空格并转换为小写字母,然后利用双指针法来判断字符串是否为回文。如果字符串与将其反转后的结果相同,则说明它是回文,返回 1,否则返回 0。
你可以调用这个函数来判断一个字符串是否为回文,例如:
```c
char string1[] = "A man a plan a canal Panama";
char string2[] = "Hello, world!";
printf("%d\n", is_palindrome(string1)); // 1
printf("%d\n", is_palindrome(string2)); // 0
```
希望这个函数能够满足你的需求!