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 { //注意题目不考虑大小写,因此需要利用toLowerCase进行转换,定义一个函数判断字符是否是数值或字符,从头到尾开始向中间遍历 public boolean isPalindrome(String s) { if(s==null||s.length()<=0) return true; s=s.toLowerCase(); int left=0; int right=s.length()-1; while(left<right){ while(left<right&&!isValid(s.charAt(left))){ left++; } while(left<right&&!isValid(s.charAt(right))){ right--; } if(left<right&&s.charAt(left)!=s.charAt(right))return false; left++; right--; } return true; } public boolean isValid(char a){ if(a>='a'&&a<='z'||a>='0'&&a<='9')return true; return false; } }