gpt4 book ai didi

检查字符串中的数字是否对称(边缘)

转载 作者:行者123 更新时间:2023-12-05 00:56:47 26 4
gpt4 key购买 nike

我有一串数字。我需要检查边缘上的数字是否对称,这意味着它们以 2 为模时具有相同的余数。

我已经编写了一个有效的代码,但我对此感到不安,在一些失败之后我想出了这个代码:

int PaliPair(char* st, int n)
{
if(n<=1) return 1;
return (*st%2 == *(st+n-1)%2) && PaliPair(st +1, n-2);
}

问题是,为什么我必须返回 n-2而不是 n-1 ?我有点困惑它为什么起作用。任何解释将不胜感激。我想我遗漏了一些东西,也许是字符串以 "\0" 结尾的事实。我需要从中得出结论。

最佳答案

如果你有一个像这样的字符串

"1243"

然后你首先检查第一个和最后一个字符。

然后你需要检查中间的字符是
"24"

所以目标字符串现在的长度为 4 - 2(已检查的字符数)

因此,在每次递归中您检查 2 个字符,在下一次递归中您需要检查少 2 个字符。

至于函数本身,我会这样写
int PaliPair( const char *s, size_t n )
{
return n < 2 || *s % 2 == *( s + n - 1 ) % 2 && PaliPair( s + 1, n - 2 );
}

甚至喜欢
int PaliPair( const char *s, size_t n )
{
return n < 2 || ( *s - '0' ) % 2 == ( *( s + n - 1 ) - '0' ) % 2 && PaliPair( s + 1, n - 2 );
}

关于检查字符串中的数字是否对称(边缘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35720958/

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