当前位置: 首页 > 知识库问答 >
问题:

创建回文

江敏学
2023-03-14
namespace Palindrome
{
    class Program
    {
        public static bool IsPalindrome(string s)
        {
            int min = 0;
            int max = s.Length - 1;
            while (true)
            {
                if (min > max) // True if we've compared up to, and then gone passed the middle of the string.
                    return true;

                if (char.ToLower(s[min++]) != char.ToLower(s[max]))
                    return false;
            }
        }

        static void Main(string[] args)
        {
            string [] words = {
                                "civic",
                                "deified",
                                // ...
                                "stats",
                                "tenet",
                             };

            foreach (string value in words)
            {
                Console.WriteLine("{0} = {1}", value, IsPalindrome(value));
            }

                   Console.WriteLine("\nPress any key to continue...");
            Console.ReadKey(true);        }
    }
}

该程序检查单词数组中的单词是否为回文(单词向前拼写与向后拼写相同)。

Main中的foreach循环将数组中的每个单词传递给IsPalindrome()函数;它测试单词,并相应地返回True或False。

由于当前数组中的每个单词都是回文,因此当程序运行时,它应该输出所有当前单词,后跟True。但是,它给了我False。为什么?

共有3个答案

伍光济
2023-03-14

我想你忘了减少你的max变量

现在你只是把每个字母和最后一个字母进行比较。

梁丘烨
2023-03-14

尝试

if (char.ToLower(s[min++]) != char.ToLower(s[max--]))
                return false;
卓云
2023-03-14

在我看来,您忘记了减小max的值;i、 e.以下内容:

if (char.ToLower(s[min++]) != char.ToLower(s[max]))

... 可能应该是:

if (char.ToLower(s[min++]) != char.ToLower(s[max--]))

无论如何,如果您在调试模式下运行它,并逐步完成代码,您应该能够很快地清除这个问题。

 类似资料:
  • 问题内容: 我正在尝试使用Java中的递归创建Palindrome程序,但是我被困住了,这是我到目前为止所拥有的: 谁能提供解决我问题的方法? 问题答案: 在这里,我为您粘贴代码: 但是,我强烈建议您了解其工作原理, 从您的问题出发,您是完全不可读的。 尝试理解此代码。 阅读代码中的注释

  • 问题内容: 我有一些有效的代码,但我正在寻找一种更好的方法。我有一个RESTful Web API,我想支持JSON,XML和TEXT媒体类型。使用带有JAXB注释的“ bean”类,可以轻松实现JSON和XML。我只是使用了 纯文本/纯文本 ,但是我希望Jersey更加智能一些,并且能够使用来将我的bean列表转换为字符串。 这是Resource类。JSON和XML媒体类型使用带有JAXB注释的

  • 问题内容: 我目前有一种方法可以检查3x3网格中中心项周围的内容,如果8个相邻位置中的内容包含我要检查的内容,我想在长度为7的数组上将该正方形标记为1。 为此,我需要在我的方法中创建并返回一个数组,这可能吗? 问题答案: 不知道是什么问题。你是这个意思?

  • 问题内容: 我需要做的就是在当前函数执行结束时执行一个回调函数。 此功能的使用者应如下所示: 我该如何实施? 问题答案: 实际上,您的代码将按原样工作,只需将回调声明为参数即可,您可以使用参数名称直接调用它。 基础知识 那会叫,这会叫,这会提醒“东西在这里”。 请注意,传递函数 引用 ()而不是调用函数并传递其结果()非常重要。在您的问题中,您可以正确执行此操作,但是值得指出,因为这是一个常见错误

  • 我是新来表达,目前如果我想发送一个回应,我会这样做 对于我所有的控制器函数,我会这样做。我想这是一种压倒性的,所以我在想是否有可能制作一个广义版本的响应。 所以经过一些搜索,我发现有两种方法可以实现这一点: 我找到了这个答案。这很清楚,但我认为这是浪费时间,我的控制器不够可读,我必须在每个控制器函数中做以下事情 这是非常有希望的,但不幸的是,经过这么多次尝试和遵循express docs,我无法让

  • 是否可以自动创建返回的setter? 尝试了以下操作,但这样它不起作用,但是这个例子显示了我想要实现的目标: 手动解决方案 编写coure的<code>setter</code>和<code>getter</code>我自己,如下所示: 问题 这个过程可以用kotlin自动化吗?有什么办法可以做到这一点吗?