朴素的中心扩展想法
判断回文
http://www.nowcoder.com/questionTerminal/e297fdd8e9f543059b0b5f05f3a7f3b2
很朴素的中心扩展想法,根据字符串的长度不同来确定不同的左右指针。详见注解,时间为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; }