1 public class Solution {
2 /**
3 * @param s A string
4 * @return Whether the string is a valid palindrome
5 */
6 public static boolean isPalindrome(String s) {
7 if (s == null || s.isEmpty()){
8 return true;
9 }
10 int left = 0;
11 int right = s.length() - 1;
12 while (left < right){
13 if (!Character.isLetterOrDigit(s.charAt(left))){
14 ++left;
15 continue;
16 }
17 if (!Character.isLetterOrDigit(s.charAt(right))){
18 --right;
19 continue;
20 }
21 if (Character.toLowerCase(s.charAt(left)) == Character.toLowerCase(s.charAt(right))){
22 ++left;
23 --right;
24 } else {
25 return false;
26 }
27 }
28 return true;
29 }
30 }