我正在尝试检查一个句子是否为回文。空格和标点符号都不重要。
例子:
• 从不奇数或偶数
• 一个人计划一条巴拿马运河。
• 看门人看名字,车库看门人
这些句子中的任何一个都在我的代码中通过了 true。 在我的第一次尝试中,我尝试删除空格、标点符号并将大写字母转换为小写字母。
int palindrome(char *str){
int n,n2 = 0,i,j=0;
n = sizeof(str)/sizeof(char);
char nova[n];
for (i=0;i< n;i++){
if(str[i] >= 'A' && str[i] <= 'Z'){
nova[n2] = ('a' + str[i] - 'A');
n2++;
}
else if(str[i] >= 'a' && str[i] <= 'z'){
nova[n2] = str[i];
n2++;
}
}
i=0;
while (i < n2-1){
if (nova[i]!= nova[j]){
return 0;
}
i++;
j--;
}
return 1;
}
最佳答案
第 4 行:您想通过 sizeof
获取元素的数量.
但是如果你通过指针将你的参数传递给函数。
n = sizeof(str)/sizeof(char);
n 将始终为 4(在 32 位平台上)。相反,使用
n = strlen(str)
(需要 #include <string.h>
)如果是 c 中的字符串格式。
关于c - 为什么我的回文检查函数总是对回文返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901316/