gpt4 book ai didi

检查字符串是否为回文(CodeSignal 测试用例问题)

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:58 27 4
gpt4 key购买 nike

我正在使用 CodeSignal 来测试我的编码能力,但我遇到了一个问题。

现在,我正在尝试检查一个字符串是否为回文。

我已经编写了应该可以工作的代码,但是 1 个测试用例一直失败。因此,19/20 测试用例可以正常工作,但最后一个不能(不确定是哪一个,它被隐藏以防止硬编码)。

checkPalindrome(char * inputString) {
char temp[strlen(inputString) + 1];
int d = 0;
for (int i = strlen(inputString) - 1; i >= 0; i--, d++)
temp[d] = inputString[i];
if (strcmp(temp, inputString) == 0)
return 1;
else return 0;
}

我不确定为什么 1 个测试用例一直失败,我在 CodeBlocks 中测试了大量字符串,它们似乎是正确的。

最佳答案

你的循环有问题。如果 inputString 为空,则 strlen(inputString) 为 unsigned long 0。如果 unsigned 和 signed 之间的运算符返回 unsigned,则两个参数都转换为 unsigned。所以,(unsigned long)0 - (int)1(unsigned long)0 - (unsigned long)1,即 264 -1(如果 unsigned long 是 8 字节)。

注意有符号数和无符号数之间的运算符!

我知道更糟糕的例子:

int foo = -1;
unsigned bar = 0;

if (foo >= bar)
cout << "-1 >= 0" << endl;
else
cout << "-1 < 0" << endl;

猜猜这段代码打印了什么。

PS:评论里写的也是真的。

关于检查字符串是否为回文(CodeSignal 测试用例问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55441788/

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