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; } }