【问题标题】:Explain this palindrome testing function [duplicate]解释这个回文测试函数[重复]
【发布时间】:2015-02-10 18:18:20
【问题描述】:
    public boolean isPalindrome(String s) {
    for (int i = 0; i < s.length() / 2; i++) {
        if (s.charAt(i) != s.charAt(s.length() - i - 1)) {
            return false;
        }
    }
    return true;
}

这是我从别人那里得到的答案,我不知道为什么它使用i&lt;s.length()/2? 还有s.chatAt(s.length() - i - 1)是什么意思?

【问题讨论】:

  • 哪一部分你不明白?你读过文档吗?
  • 无法理解您的问题。请改写
  • 你现在要问这个问题every day 吗?您对链接的问题有什么不了解的地方?要具体。
  • 我希望这不是你的作业的答案。如果是,请尝试编写自己的代码。借用别人的代码不会教你任何东西。 edit 啊,我明白了,这是另一个问题的答案。
  • @Tom 是的,代码交付是昨天。这就是为什么回答这些问题没有帮助。 OP 回来了,因为“给我代码”还不够。事实证明,你需要对一口井有一些基本的了解。

标签: java


【解决方案1】:

我会尝试为你分解逻辑。

回文是一个单词可以从任一方向读取并且仍然是同一个单词。例如“妈妈”。检查一个单词是否是回文的一种方法是同时查看单词的第一个字母和最后一个字母,然后检查它们是否是同一个字母。

这就是这段代码正在做的事情。它确保第一个和最后一个字母相同,然后移动到第二个和第二个最后一个字母。如果发现差异,则返回错误/错误。

分解一些代码: for (int i = 0; i &lt; s.length() / 2; i++) { 正在循环你的话。既然你说的话只说了一半,我们只需要去s.length()/2

if (s.charAt(i) != s.charAt(s.length() - i - 1)) { 检查开头和结尾的字符,其中s.length() -i -1 专门获取最后一个字符的索引 - i(你已经通过它的次数)-1(因为索引计数很奇怪) .

【讨论】:

    【解决方案2】:

    它将长度除以2,因为它每次迭代都包含 2 个字符。第一次迭代,当i0时,比较第一个和最后一个字符,对应索引0length - 0 - 1,或者length - 1。第二次迭代,当i1时,比较倒数第二个字符,对应索引1length - 1 - 1,或者length - 2

    如果长度是奇数,那么它不会将中间字符与任何东西(索引length / 2)进行比较,但这对于回文考虑无关紧要。

    【讨论】:

    • 如果像String一样是“level”,那么string的长度结果是什么?是5吗?所以 s.charAt(s.length() - 1) 将是字符'l'?
    • 是的,字符串的长度当然是5。因此,比较s.charAt(0)s.charAt(4)(2 个'l's),比较s.charAt(1)s.charAt(3)(2 个'e's)。
    • 我想我现在明白了,谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-03-10
    • 2011-03-02
    • 1970-01-01
    • 2017-01-03
    • 2021-06-21
    • 2015-03-16
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多