【发布时间】:2018-03-24 06:30:07
【问题描述】:
我希望您对我的程序提供帮助。我正在尝试检查用户输入是否是回文。这是我的代码。
Stack cstack = new Stack();
Stack rstack = new Stack();
Console.WriteLine("Enter a palindrome string");
string input = Console.ReadLine();
foreach (char c in input)
{
cstack.Push(c);
}
foreach (var v in cstack)
{
rstack.Push(v);
}
if (cstack.Equals(rstack))
{
Console.Write("String is a palindrome");
}
else
{
Console.Write("String is not a palindrome");
}
Console.ReadLine();
所以我希望我的代码正在做的是从用户那里获得输入。使用 foreach 循环将用户输入作为字符推送到 cstack 中。使用另一个 foreach 循环将 cstack 中的字符(应该保存用户输入)反转到一个名为 rstack 的新堆栈中。然后使用 if else 语句检查保存原始输入的 c 堆栈是否等于反向堆栈。此比较将确定字符串是否为回文。
为大家的帮助喝彩。我很高兴我没有成为一个不知道他在做什么的白痴。
对不起,有谁知道如何做到这一点,所以回文会忽略大小写。我假设您使用 ToLower 将字符串转换为小写,但我真的不知道我以前从未需要不区分大小写的字符串。
【问题讨论】:
-
是否必须使用 Stack 来解决这个问题?您可以在不使用 Stack 的情况下解决此问题..
-
是的,我正在做的练习需要使用堆栈。
-
使用堆栈添加答案
-
如果真的要使用2个栈,可以把
(cstack.Equals(rstack))换成(cstack.SequenceEquals(rstack)) -
为建议喝彩。从你的暗示看来,我的代码效率不如我所能做到的。
标签: c# stack palindrome