【发布时间】:2021-12-08 11:54:10
【问题描述】:
我正在使用堆栈检查回文。我想接收用户的输入,判断是否是回文,并输出结果
我想忽略它而不使用删除空格和特殊字符的方法,但它没有按我的意愿进行。
代码是
//
int palindrome(char string[])
{
Stack s;
int ii;
initStack(&s);
for (ii = 0; string[ii] != '\0'; ii++)
{
if (string[ii] >= 'A' && string[ii] <= 'Z')
string[ii] += 32;
if (string[ii] >= 'a' && string[ii] <= 'z')
{
push(&s, string[ii]);
}
}
//printf("%s\n", string);
for (ii = 0; string[ii] != 0; ii++)
{
if (string[ii] != pop(&s))
{
return 0;
}
}
return 1;
}
int main()
{
char string[MAX_STACK_SIZE];
printf("Enter a String\n");
gets_s(string);
if (palindrome(string))
printf("palindrome!\n");
else
printf("X\n");
return 0;
}
在这部分中,指定了'a'和'z'之间的范围,我想知道为什么不排除特殊字符和空格并将其压入堆栈。
for (ii = 0; string[ii] != '\0'; ii++)
{
if (string[ii] >= 'A' && string[ii] <= 'Z')
string[ii] += 32;
if (string[ii] >= 'a' && string[ii] <= 'z')
{
push(&s, string[ii]);
}
}
【问题讨论】:
标签: c for-loop stack c-strings palindrome