【LeetCode】Valid Palindrome

Valid Palindrome 
Total Accepted: 4526 Total Submissions: 21149 My Submissions
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.
判断某个字符串是不是回文串。
比较简单吧。
难点在于,字符串会有空格,以及标点符号之类的,这些可以统统忽略。
注意可以在一开始,将所有的空格都替换掉。将字母都转为小写。
用两个指针(C/C++习惯上的描述)来标记头和尾。
如果是字母或者是数字,就比较这两个字符是否相等,如果相等,比较下一个。
如果不是字母或者数字,头指针或者尾指针递加或者递减。
一直判断到头尾指针相等为止。
Java AC
public class Solution {
    public boolean isPalindrome(String s) {
        if(s == null || "".equals(s.trim())){
            return true;
        }
        s = s.trim().replaceAll("[' ']+","").toLowerCase();
        int len = s.length();
        int i = 0;
        int j = len-1;
        while(i <= j && i < len && j >= 0 ){
            char start = s.charAt(i);
            char end = s.charAt(j);
            if (!(start >= 'a' && start <= 'z') && !(start >= '0' && start <= '9')) {
				i++;
				continue;
			}
            if (!(end >= 'a' && end <= 'z') && !(end >= '0' && end <= '9')) {
            	j--;
            	continue;
            }
            if(start != end){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}

你可能感兴趣的:(【LeetCode】Valid Palindrome)