Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

public class Solution {
    
    /**
     * 判断某位是否是alphanumeric (字母or数字)
     * 
     */
    public boolean isAlphanumeric(char c){
        
        if(c>='a'&&c<='z'){
            return true;
        }
        if(c>='0'&&c<='9'){
            return true;
        }
        if(c>='A'&&c<='Z'){
            return true;
        }
    
        return false;
    }
    
    
    public boolean isPalindrome(String s) {
        List<String> list1 = new ArrayList<String>();
        char[] list2 = s.toCharArray();
        int size2 = list2.length;
        for(int i=0;i<size2; i++){
            
            if(isAlphanumeric(list2[i])){
                String temp = String.valueOf(list2[i]).toLowerCase();//统一转换成小写字母
                list1.add(temp);
            }
        }
        
        int size1 = list1.size();
        
        if(size1==0){
            return true;
        }
        
        for(int j=0;j<size1/2;j++){
            if(!list1.get(j).equals(list1.get(size1-1-j))){
                return false;
            }
        }
        return true;
    }
}
原文地址:https://www.cnblogs.com/mrpod2g/p/4251125.html