LeetCode 上的这道题其实很简单,双指针比较即可,其中有些过程要注意,比如大小写要去掉,标点去掉,空格去掉,还有 ` 这种玩意也要去掉,因为用正则表达式是无法将该玩意去掉的,所以只能单独去掉,之后就Accept了。。。
直接上代码:
boolean isPalindrome(String s) {
if (s == null)
return false;
if ("".equals(s))
return true;
s = s.replaceAll("[\\pP]", ""); // 正则表达式
s = s.replaceAll(" ", ""); // 正则表达式
s = s.replace("`", "");
s = s.toLowerCase();
int n = s.length();
for (int i = 0, j = n - 1; i < j; i++, j--) {
if ((s.charAt(i)) != (s.charAt(j)))
return false;
}
return true;
}