题目:
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
针对本问题采用对撞指针进行解决,字符串相当于一个字符数组
public class ValidPalindrome {
public static boolean isPalindrome(String s) {
if (null == s)
return false;
if ("".equals(s))
return true;
int l = 0;
int r = s.length() - 1;
while(l <= r){
if (!isAlphanumeric(s.charAt(l))){
l++;
continue;
}
if (!isAlphanumeric(s.charAt(r))){
r--;
continue;
}
if (Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r))){
return false;
}else {
l++;
r--;
}
}
return true;
}
public static boolean isAlphanumeric(char c){
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) {
return true;
}
return false;
}
public static void main(String[] args) {
String s = "A man, a plan, a canal: Panama";
System.out.println(isPalindrome(s));
}
}