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

为什么在检查回文时,反向字符串生成器不等于原始字符串?

慕承恩
2023-03-14

我正在尝试创建一个函数,该函数接受字符串“s”以检查它是否是回文:

    StringBuilder sb = new StringBuilder();
    
    for (char c : s.toCharArray()) {
        if (Character.isLetterOrDigit(c)) {
            sb.append(Character.toUpperCase(c));
        }
    }
    
    return sb.toString().equals(sb.reverse().toString());

出于某种原因,如果我将 return 语句更改为 this,对于某些非回文,它将返回 true 而不是 false:

return sb.reverse().toString().equals(sb.toString());

我不知道为什么改变反转顺序会导致这种情况。

共有1个答案

叶声
2023-03-14

发生这种情况是因为 reverse() 更改了 StringBuilder,然后返回以下内容

return sb.toString()                         // "12345", sb -> "12345"
         .equals(
                 sb.reverse().toString()     // "54321", sb -> "54321"
                );                           // false

return sb.reverse().toString()               // "54321", sb -> "54321"
         .equals(
                 sb.toString()               // "54321", sb -> "54321"
                );                           // true

 类似资料:
  • 问题内容: String[] letters = {“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “L”}; 为什么是 Fk呀! 输入AL字母之一绝对不会发生? 问题答案: 字符串是对象。所述通过引用,而不是由它们的内部值进行比较的对象。 有两种解决方案: 使用method来比较两个对象的值。 使用代替。这是原始的,因此可以使用。

  • 问题内容: 回文是一个词,短语,数字或其他单位序列,可以读取相同的方式在任何方向。 为了检查一个单词是否是回文,我得到了这个单词的char数组并比较了这些字符。我试过了,看起来很管用。但是我想知道这是对的还是有什么需要改进的地方。 这是我的代码: 问题答案: 为什么不只是: 例: 输入为“ andna”。 i1将为0,i2将为4。 第一次循环迭代,我们将比较和。它们相等,因此我们将i1递增(现在为

  • 我试图使用和检查String是否是回文。对于像“chan”这样没有对称性的单词,它正确地返回,但它也为真正的回文(如“madam”)返回。 代码: 输出: 我正在使用Java8运行Eclipse Neon。

  • 问题内容: 我在这里感到困惑,即使原始字符串将每个字符串都转换为,但是当最终出现时,它将引发错误。 更新: 现在,Python常见问题也涵盖了这一点:为什么原始字符串(r-strings)不能以反斜杠结尾? 问题答案: 您仍然需要转义或使用原始字符串,因为否则python解释器将不知道字符串在何处停止。在您的示例中,您将转义结束。 除此以外: 查看突出显示的语法,以了解我的意思。

  • 问题内容: 我有以下代码: 旨在将物料价格初始化为0,然后获取有关其的信息。如果价格被告知为“ e”,则表示交换而不是卖出,其作为负数存储在数据库中。 也有可能将价格保留为0,这是因为该项目是奖励商品,或者是因为价格将在以后设置。 但是,每当未设置价格时,其初始值将为0,则上述循环将评估为true,并将价格设置为-1。也就是说,它认为0等于“ e”。 如何解释呢? 当价格提供为0(初始化后)时,该

  • 问题内容: 从技术上讲,文档中描述了任意数量的反斜杠。 似乎解析器可以将原始字符串中的反斜杠视为常规字符(这不是原始字符串的全部含义吗?),但是我可能缺少明显的东西。 问题答案: 可以使用反斜杠对字符串引号进行转义,但反斜杠仍保留在字符串中;例如,是由两个字符组成的有效字符串文字:反斜杠和双引号;不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠