Valid Palindrome

2018-03-06  本文已影响0人  nafoahnaw

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.

判断给出的字符串是否是回文
自己的思路如下,正则表达式格式化给出的字符串,使用StringBuilder.reverse()方法得到反转的字符串,如果与格式化后的字符串一致,那么返回true,否则返回false

   public boolean isPalindrome(String s) {
        if(s == null){
            return false;
        }
        s = s.replaceAll("\\W+", "").toLowerCase();
        if(s.isEmpty()){
            return true;
        }
        return s.equals(new StringBuilder(s).reverse().toString());
   }

这种用到了java本身提供的特性,还有一种办法是首指针++,尾指针--,并判断s[i]==s[j]

    public boolean isPalindrome(String s) {
        if (s == null) {
            return false;
        }
        s = s.toLowerCase();
        for(int i = 0, j = s.length() - 1; i < j;){
            if(!Character.isLetterOrDigit(s.charAt(i))){
                i++;
            }else if(!Character.isLetterOrDigit(s.charAt(j))){
                j--;
            }else{
                if(s.charAt(i++) != s.charAt(j--)){
                    return false;
                }
            }
        }
        return true;
    }
上一篇 下一篇

猜你喜欢

热点阅读