C#回文堆栈不工作
C# Palindrome Stack not working
我需要你帮助我的程序。我正在尝试检查用户输入是否为回文。这是我的代码。
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<char> cstack = new Stack<char>();
string input = "PoP";
var inputToUpper = input.ToUpper(); /*assuming case senstivity is not to be considered */
foreach (char c in inputToUpper)
{
cstack.Push(c);
}
bool isPalindrome = true;
var noOfItems = cstack.Count;
for(int i=0; i< noOfItems ; i++)
{
if (inputToUpper[i] != cstack.Pop())
{
isPalindrome = false; break;
}
}
if (isPalindrome)
{
Console.WriteLine("Palindrome");
}
else
{
Console.WriteLine("Non Palindrome");
}
可以参考live demo here
这个回文解决方案适用于带空格的回文句子
private static bool isPalinDrome(string word)
{
word = word.ToLower();
word = word.Replace(" ", "");
char[] wordArray = word.ToCharArray();
String reverseWord = "";
for (int i = wordArray.Length - 1; i >= 0; i--)
{
reverseWord = reverseWord + wordArray[i];
}
if (word == reverseWord)
{
return true;
}
return false;
}
我需要你帮助我的程序。我正在尝试检查用户输入是否为回文。这是我的代码。
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<char> cstack = new Stack<char>();
string input = "PoP";
var inputToUpper = input.ToUpper(); /*assuming case senstivity is not to be considered */
foreach (char c in inputToUpper)
{
cstack.Push(c);
}
bool isPalindrome = true;
var noOfItems = cstack.Count;
for(int i=0; i< noOfItems ; i++)
{
if (inputToUpper[i] != cstack.Pop())
{
isPalindrome = false; break;
}
}
if (isPalindrome)
{
Console.WriteLine("Palindrome");
}
else
{
Console.WriteLine("Non Palindrome");
}
可以参考live demo here
这个回文解决方案适用于带空格的回文句子
private static bool isPalinDrome(string word)
{
word = word.ToLower();
word = word.Replace(" ", "");
char[] wordArray = word.ToCharArray();
String reverseWord = "";
for (int i = wordArray.Length - 1; i >= 0; i--)
{
reverseWord = reverseWord + wordArray[i];
}
if (word == reverseWord)
{
return true;
}
return false;
}