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.

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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;

    }

}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄