解释这个回文测试功能

时间:2015-02-10 18:18:21

标签: java

    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<s.length()/2s.chatAt(s.length() - i - 1)是什么意思?

2 个答案:

答案 0 :(得分:2)

我会尝试为你分解逻辑。

回文是指从任一方向读取一个单词并且仍然是同一个单词的地方。例如'妈妈'。检查一个单词是否为回文的一种方法是通过查看第一个字母和同一时间的最后一个字母,然后检查它们是否是同一个字母。

这就是这段代码的作用。它确保第一个和最后一个字母相同,然后移到第二个和第二个字母。如果找到差异,则返回错误/ false。

分解你的一些代码:     for (int i = 0; i < s.length() / 2; i++) {正在循环你的话语。由于您只是想要了解一半,我们只需要转到s.length()/2

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

答案 1 :(得分:0)

它将长度除以2,因为它每次迭代覆盖2个字符。第一次迭代,当i0时,它会比较第一个和最后一个字符,对应于索引0length - 0 - 1length - 1。第二次迭代,当i1时,它会比较第二个和第二个到最后一个字符,对应于索引1length - 1 - 1,或length - 2。< / p>

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