朴素的中心扩展想法
判断回文
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;
}
安克创新 Anker公司福利 659人发布