LeetCode125-验证回文串
双指针实现
先将字符串转成小写,然后左右两个指针,分别向中间移动,判断字符是否是a-z和0-9,不是就移动指针,直到两边都是合法的字符,再进行比较
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public boolean isPalindrome(String s) { int len = s.length(); if (len == 0) return true; s = s.toLowerCase(); int l = 0; int r = len - 1; while (l < r) { while (l < r&&!isAlphaNum(s.charAt(l))) l++; while (l < r&&!isAlphaNum(s.charAt(r))) r--; if (s.charAt(l) != s.charAt(r)) { return false; } l++; r--; } return true; }
private boolean isAlphaNum(char c) { if (c >= 'a' && c <= 'z' || c >= '0' && c <= '9') { return true; } return false; }
|