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

results matching ""

    No results matching ""