首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#回文堆栈不工作

C#回文堆栈不工作
EN

Stack Overflow用户
提问于 2018-03-24 06:30:07
回答 2查看 918关注 0票数 2

我希望你能帮助我的计划。我试图检查用户输入是否是回文。这是我的密码。

代码语言:javascript
复制
        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循环将用户输入作为字符推送到c堆栈中。使用另一个foreach循环将c堆栈中的字符(应该保存用户输入)反转到一个名为r堆栈的新堆栈中。然后使用if else语句检查保存原始输入的c堆栈是否等于反向堆栈。此比较将确定字符串是否为回文。

为大家的帮助干杯。我很高兴我没有以白痴的身份出柜,不知道他在做什么。

对不起,伙计们,但会有人知道怎么做,这样回文就会忽略大小写敏感性。我假设您使用ToLower将字符串转换为小写,但实际上我不知道我以前从来不需要字符串来区分大小写。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-24 06:37:28

代码语言:javascript
复制
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");
            }

您可以参考现场演示

票数 1
EN

Stack Overflow用户

发布于 2019-10-23 11:04:53

这种回文解适用于带空格的回文句。

代码语言:javascript
复制
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;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49461953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档