很朴素的中心扩展想法,根据字符串的长度不同来确定不同的左右指针。详见注解,时间为O(S),空间O(1),其中S是字符串长度。

public boolean judge (String str) {
    int left = 0, right = 0;
    //根据长度的奇偶性来确定不同的指针起始位置
    if ((str.length() & 1) == 0) {
        left = (str.length() >> 1) - 1;
        right = (str.length() >> 1);
    } else {
        left = right = (str.length() >> 1);
    }
    //进行中心扩展,扩展的过程中一旦遇到不相等的直接返回即可
    for (; left >= 0 && right < str.length(); left--, right++) {
        if (str.charAt((left)) != (str.charAt(right))) return false;
    }
    //扩展完毕,返回true
    return true;
}