我想要您的程序帮助。我正在尝试检查用户输入是否是回文。这是我的代码。

        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

09-11 19:25
查看更多