gpt4 book ai didi

c - 我如何检测C中的回文?

转载 作者:太空狗 更新时间:2023-10-29 14:59:59 25 4
gpt4 key购买 nike

我一直在研究潜在的面试问题,其中之一是用 C 编写一个函数来检测给定的字符串是否为回文。

我已经有了一个很好的开始:

#include <stdio.h>
#include <stdbool.h>

bool isPalindrome(char *value);

bool isPalindrome(char *value)
{
if (value == null)
return false;

char *begin = value;
char *end = begin + strlen(value) - 1;

while(*begin == *end)
{
if ((begin == end) || (begin+1 == end))
return true;

begin++;
end--;
}

return false;
}


int main()
{
printf("Enter a string: \n");
char text[25];
scanf("%s", text);

if (isPalindrome(text))
{
printf("That is a palindrome!\n");
}
else
{
printf("That is not a palindrome!\n");
}
}

但是,我现在想确保忽略空格和标点符号。

考虑到我上面编写的代码,如果指针遇到标点符号/空格,向前或向后移动指针的最佳方法是什么?

最佳答案

将循环更改为

while(begin < end) {
while(ispunct(*begin) || isspace(*begin))
++begin;
while(ispunct(*end) || isspace(*end))
--end;
if(*begin != *end)
return false;
++begin;
--end;
}
return true;

关于c - 我如何检测C中的回文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com