.实现函数is_palindrome,判断参数string是否为回文,所谓回文,就是左右对称的字符串。
时间: 2024-09-23 12:08:24 浏览: 151
实现`is_palindrome`函数,你可以通过比较字符串与其反转字符串是否相等来判断一个字符串是否为回文。下面是一个简单的Python示例:
```python
def is_palindrome(string):
"""
判断给定字符串是否为回文。
参数:
string (str): 需要检查的字符串
返回:
bool: 如果字符串是回文则返回True,否则返回False
"""
# 使用Python的切片功能取反向字符串,并忽略空格和大小写
reversed_string = string[::-1].lower()
# 比较原字符串与反转后的字符串是否相等
if string.lower() == reversed_string:
return True
else:
return False
# 测试函数
print(is_palindrome("A man a plan a canal Panama")) # 输出: True
print(is_palindrome("hello")) # 输出: False
相关问题
编写C语言程序:strs.txt的第一行为该文件包含字符串的个数n,从第二行开始,给出n个字符串,使用循环和调用函数,分别判断每个字符串是否为回文串,并且使用sprintf来将要输出的字符串组合在一起成为一个新的字符串后,输出到另一个文件is_palindrome.txt,判断结果为yes或no。 提示: 1.使用fgets和fputs完成输入和输出 2.使用<stdlib.h>中的函数atoi将字符串转化成整型 3.fgets会读入每行最后的换行符,所以在使用fgets读入一个字符串后,将真实字符串的最后一位(此时应该是’\n’)置为’\0’,即str[strlen(str) - 1] = '\0’; is_palindrome.txt文件示例: abcde no abcba yes abcdefg no
下面是程序的实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int is_palindrome(char *str);
int main() {
FILE *fp_in, *fp_out;
char buffer[100];
int n, i;
fp_in = fopen("strs.txt", "r");
fp_out = fopen("is_palindrome.txt", "w");
// 读取字符串个数n
fgets(buffer, 100, fp_in);
n = atoi(buffer);
// 逐个读取字符串,判断是否为回文串并输出结果
for (i = 0; i < n; i++) {
fgets(buffer, 100, fp_in);
buffer[strlen(buffer) - 1] = '\0'; // 去掉末尾的换行符
if (is_palindrome(buffer)) {
sprintf(buffer, "%s yes\n", buffer);
} else {
sprintf(buffer, "%s no\n", buffer);
}
fputs(buffer, fp_out);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
// 判断一个字符串是否为回文串
int is_palindrome(char *str) {
int len = strlen(str);
int i;
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
return 0;
}
}
return 1;
}
```
程序的思路是先读取字符串个数n,然后逐个读取字符串并判断是否为回文串。如果是回文串,将结果组合成一个新的字符串并输出到文件;如果不是回文串,同样输出结果到文件。函数is_palindrome用于判断一个字符串是否为回文串,具体实现是从字符串两端分别向中间遍历,逐个比较字符是否相等。
c语言编写函数判断一个字符串是否为回文运用指针函数并判断输入字符串是否为回文
在C语言中,我们可以利用指针和循环结构来编写一个函数来判断一个字符串是否是回文。回文是指正读反读都一样的字符串,比如"level"、"racecar"等。
下面是一个简单的C函数示例,它接受两个指向字符数组的指针作为参数,通过比较首尾字符是否相等来判断字符串是否为回文:
```c
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool is_palindrome(char *str1, char *str2) {
// 如果两个指针交叉点到达结束位置,则说明是回文
if (str1 >= str2)
return true;
// 比较两个指针所指的字符是否相等
while (*str1 == *str2) {
str1++;
str2--;
}
// 如果有不相等的字符,说明不是回文
return false;
}
int main() {
char input[] = "madam";
if (is_palindrome(input, input + strlen(input) - 1)) {
printf("%s is a palindrome.\n", input);
} else {
printf("%s is not a palindrome.\n", input);
}
return 0;
}
```
在这个例子中,`str1` 和 `str2` 分别指向字符串的开始和结束,然后向中心移动,如果发现有不匹配的字符则返回 `false`。如果没有找到不匹配的字符,说明整个字符串是回文,返回 `true`。
阅读全文