gpt4 book ai didi

c - 使用堆栈识别回文

转载 作者:行者123 更新时间:2023-12-02 07:26:53 25 4
gpt4 key购买 nike

我编写了以下代码来使用堆栈检查字符串是否为回文。只要字符串中有两个相同的连续字符,我就得不到正确的输出。例如,代码确实说 exe 是一个回文。但它说 ee 不是回文。

int is_palindrome(char str[]) {
int j, top = -1;
char stk_item, s[30];

for (j = 0; j < strlen(str); j++)
s[top++] = str[j];
for (j = 0; j < strlen(str); j++) {
stk_item = s[--top];
if (str[j] != stk_item) return 0; // is not a palindrome
}

return 1; // is a palindrome
}

可能是什么问题?

最佳答案

您混淆了预增量和后增量运算符。

在C语言中,x++表示“在这条语句后增加x的值”,++x表示“先增加x的值,然后执行语句。 “

下面的代码应该可以工作:

int is_palindrome(char str[]) {
int j, top = -1;
char stk_item, s[30];

for (j = 0; j < strlen(str); j++)
s[++top] = str[j];
for (j = 0; j < strlen(str); j++) {
stk_item = s[top--];
if (str[j] != stk_item) return 0;
}

return 1;
}

关于c - 使用堆栈识别回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27263106/

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