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" 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.

//alphanumeric指的是数字和字母,"a."也是回文序列,忽略.

class Solution {

    public boolean isPalindrome(String s) {

        if (s.isEmpty())

            return true;

        int head = 0;

        int tail = s.length() - 1;

        while (head < tail) { //这里可以是<=      

           //这里只能是<,不能=,否则后面s.charAt(head)会有越界异常

            while (head < tail && !Character.isLetterOrDigit(s.charAt(head)))

                head++;

            while (head < tail && !Character.isLetterOrDigit(s.charAt(tail)))

                tail--;

            

             if (Character.toLowerCase(s.charAt(head)) != Character.toLowerCase(s.charAt(tail)))

                 return false;

             head++;

             tail--;                                    

         }

         return true;

    }

}

posted @ 2019-04-09 16:42  MarkLeeBYR  阅读(93)  评论(0)    收藏  举报