125. 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"isnota 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.
思路1: s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase() 很关键
public class Solution {
public boolean isPalindrome(String s) {
if (s==null||s.length()<=1) return true;
s = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
for (int i=0;i<s.length();i++){
if(s.charAt(i) != s.charAt(s.length() - 1 - i)){
return false;
}
}
return true;
}
}
思路2:s.toLowerCase().toCharArray() 很关键。然后双指针
public class Solution {
public boolean isPalindrome(String s) {
if (s==null||s.length()<=1) return true;
int left = 0;
int right = s.length()-1;
char[] sArr = s.toLowerCase().toCharArray();
while(left<right){
while(left<=right&&!((sArr[left]<='z'&&sArr[left]>='a')||(sArr[left]<='9'&&sArr[left]>='0'))){
left++;
}
while(left<=right&&!((sArr[right]<='z'&&sArr[right]>='a')||(sArr[right]<='9'&&sArr[right]>='0'))){
right--;
}
if (left>right) {
break;
}
if (sArr[left]!=sArr[right]){
return false;
}
left++;
right--;
}
return true;
}
}